Skip to content

Commit 0fa077f

Browse files
committed
Probably improve performance of strings CutPrefix, CutSuffix, HasPrefix and HasSuffix
1 parent ec08d2a commit 0fa077f

1 file changed

Lines changed: 16 additions & 23 deletions

File tree

std/strings.tsh

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,6 @@ func Join(elems []string, sep string) string {
3636
return s
3737
}
3838

39-
func HasPrefix(s string, prefix string) bool {
40-
l := len(prefix)
41-
42-
if len(s) >= l {
43-
return s[:l] == prefix
44-
}
45-
return false
46-
}
47-
48-
func HasSuffix(s string, suffix string) bool {
49-
l := len(suffix)
50-
51-
if len(s) >= l {
52-
l *= -1
53-
return s[l:] == suffix
54-
}
55-
return false
56-
}
57-
5839
func Count(s string, substr string) int {
5940
lenS := len(s)
6041
lenSub := len(substr)
@@ -162,15 +143,19 @@ func ReplaceAll(s string, old string, new string) string {
162143
}
163144

164145
func CutPrefix(s string, prefix string) (string, bool) {
165-
if HasPrefix(s, prefix) {
166-
return s[len(prefix):], true
146+
l := len(prefix)
147+
148+
if s[:l] == prefix {
149+
return s[l:], true
167150
}
168151
return s, false
169152
}
170153

171154
func CutSuffix(s string, suffix string) (string, bool) {
172-
if HasSuffix(s, suffix) {
173-
return s[0 : len(s)-len(suffix)], true
155+
l := len(suffix)
156+
157+
if s[l*-1:] == suffix {
158+
return s[0 : len(s)-l], true
174159
}
175160
return s, false
176161
}
@@ -188,6 +173,14 @@ func Cut(s string, sep string) (string, string, bool) {
188173
return s, "", false
189174
}
190175

176+
func HasPrefix(s string, prefix string) bool {
177+
return s[:len(prefix)] == prefix
178+
}
179+
180+
func HasSuffix(s string, suffix string) bool {
181+
return s[len(suffix)*-1:] == suffix
182+
}
183+
191184
func TrimPrefix(s string, prefix string) string {
192185
s, c := CutPrefix(s, prefix)
193186
return s

0 commit comments

Comments
 (0)