aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/strings/replace.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/strings/replace.go')
-rw-r--r--libgo/go/strings/replace.go11
1 files changed, 6 insertions, 5 deletions
diff --git a/libgo/go/strings/replace.go b/libgo/go/strings/replace.go
index e28d428..ee728bb 100644
--- a/libgo/go/strings/replace.go
+++ b/libgo/go/strings/replace.go
@@ -387,7 +387,7 @@ func makeSingleStringReplacer(pattern string, value string) *singleStringReplace
}
func (r *singleStringReplacer) Replace(s string) string {
- var buf []byte
+ var buf Builder
i, matched := 0, false
for {
match := r.finder.next(s[i:])
@@ -395,15 +395,16 @@ func (r *singleStringReplacer) Replace(s string) string {
break
}
matched = true
- buf = append(buf, s[i:i+match]...)
- buf = append(buf, r.value...)
+ buf.Grow(match + len(r.value))
+ buf.WriteString(s[i : i+match])
+ buf.WriteString(r.value)
i += match + len(r.finder.pattern)
}
if !matched {
return s
}
- buf = append(buf, s[i:]...)
- return string(buf)
+ buf.WriteString(s[i:])
+ return buf.String()
}
func (r *singleStringReplacer) WriteString(w io.Writer, s string) (n int, err error) {