diff --git a/u/strings.go b/u/strings.go index 6c87302..30a0813 100644 --- a/u/strings.go +++ b/u/strings.go @@ -43,3 +43,10 @@ func Capitalize(s string) string { s = strings.ToLower(s) return strings.ToUpper(s[0:1]) + s[1:] } + +// TrimPrefix is like strings.TrimPrefix but also returns a bool +// indicating that the string was trimmed +func TrimPrefix(s string, prefix string) (string, bool) { + s2 := strings.TrimPrefix(s, prefix) + return s2, len(s) != len(s2) +} diff --git a/u/strings_test.go b/u/strings_test.go new file mode 100644 index 0000000..4867176 --- /dev/null +++ b/u/strings_test.go @@ -0,0 +1,22 @@ +package u + +import ( + "testing" + + "github.com/kjk/common/assert" +) + +func TestTrimPrefix(t *testing.T) { + tests := []string{ + "foo", "f", "oo", + "foo", "o", "foo", + } + + n := len(tests) + for i := 0; i < n; i += 3 { + got, trimmed := TrimPrefix(tests[i], tests[i+1]) + exp := tests[i+2] + assert.Equal(t, exp, got) + assert.Equal(t, trimmed, tests[i] != got, "%#v, %#v", tests[i], tests[i+1]) + } +}