Wrote ReplaceAll(), to replace all matches of the regex with a given string
This commit is contained in:
@@ -350,7 +350,7 @@ func (re Reg) Expand(dst string, template string, src string, match Match) strin
|
|||||||
i++
|
i++
|
||||||
} else {
|
} else {
|
||||||
numStr := ""
|
numStr := ""
|
||||||
for unicode.IsDigit(templateRuneSlc[i]) {
|
for i < len(templateRuneSlc) && unicode.IsDigit(templateRuneSlc[i]) {
|
||||||
numStr += string(templateRuneSlc[i])
|
numStr += string(templateRuneSlc[i])
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
@@ -395,3 +395,23 @@ func (re Reg) LiteralPrefix() (prefix string, complete bool) {
|
|||||||
}
|
}
|
||||||
return prefix, complete
|
return prefix, complete
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReplaceAll replaces all matches of the expression in src, with the text in repl. In repl, variables are interpreted
|
||||||
|
// as they are in [Reg.Expand]. The resulting string is returned.
|
||||||
|
func (re Reg) ReplaceAll(src string, repl string) string {
|
||||||
|
matches := re.FindAllSubmatch(src)
|
||||||
|
i := 0
|
||||||
|
currentMatch := 0
|
||||||
|
dst := ""
|
||||||
|
for i < len(src) {
|
||||||
|
if currentMatch <= len(matches) && matches[currentMatch][0].IsValid() && i == matches[currentMatch][0].StartIdx {
|
||||||
|
dst += re.Expand("", repl, src, matches[currentMatch])
|
||||||
|
i = matches[currentMatch][0].EndIdx
|
||||||
|
currentMatch++
|
||||||
|
} else {
|
||||||
|
dst += string(src[i])
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dst
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user