mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
bytes, strings: add Replace
This is the Replace I suggested in the review of CL 1114041. It's true that we already have regexp.MustCompile(regexp.QuoteMeta(old)).ReplaceAll(s, new) but because this Replace is doing a simpler job it is simpler to call and inherently more efficient. I will add the bytes implementation and tests to the CL after the strings one has been reviewed. R=r, cw CC=golang-dev https://golang.org/cl/1731048
This commit is contained in:
parent
269df58270
commit
0bf413ab8e
4 changed files with 153 additions and 0 deletions
|
|
@ -645,3 +645,39 @@ func TestTrimFunc(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
type ReplaceTest struct {
|
||||
in string
|
||||
old, new string
|
||||
n int
|
||||
out string
|
||||
}
|
||||
|
||||
var ReplaceTests = []ReplaceTest{
|
||||
ReplaceTest{"hello", "l", "L", 0, "heLLo"},
|
||||
ReplaceTest{"hello", "x", "X", 0, "hello"},
|
||||
ReplaceTest{"", "x", "X", 0, ""},
|
||||
ReplaceTest{"radar", "r", "<r>", 0, "<r>ada<r>"},
|
||||
ReplaceTest{"", "", "<>", 0, "<>"},
|
||||
ReplaceTest{"banana", "a", "<>", 0, "b<>n<>n<>"},
|
||||
ReplaceTest{"banana", "a", "<>", 1, "b<>nana"},
|
||||
ReplaceTest{"banana", "a", "<>", 1000, "b<>n<>n<>"},
|
||||
ReplaceTest{"banana", "an", "<>", 0, "b<><>a"},
|
||||
ReplaceTest{"banana", "ana", "<>", 0, "b<>na"},
|
||||
ReplaceTest{"banana", "", "<>", 0, "<>b<>a<>n<>a<>n<>a<>"},
|
||||
ReplaceTest{"banana", "", "<>", 10, "<>b<>a<>n<>a<>n<>a<>"},
|
||||
ReplaceTest{"banana", "", "<>", 6, "<>b<>a<>n<>a<>n<>a"},
|
||||
ReplaceTest{"banana", "", "<>", 5, "<>b<>a<>n<>a<>na"},
|
||||
ReplaceTest{"banana", "", "<>", 1, "<>banana"},
|
||||
ReplaceTest{"banana", "a", "a", 0, "banana"},
|
||||
ReplaceTest{"banana", "a", "a", 1, "banana"},
|
||||
ReplaceTest{"☺☻☹", "", "<>", 0, "<>☺<>☻<>☹<>"},
|
||||
}
|
||||
|
||||
func TestReplace(t *testing.T) {
|
||||
for _, tt := range ReplaceTests {
|
||||
if s := string(Replace([]byte(tt.in), []byte(tt.old), []byte(tt.new), tt.n)); s != tt.out {
|
||||
t.Errorf("Replace(%q, %q, %q, %d) = %q, want %q", tt.in, tt.old, tt.new, tt.n, s, tt.out)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue