3 回答

TA貢獻1770條經驗 獲得超3個贊
我認為最好的選擇是使用返回的索引strings.IndexAny,它將返回字符串中任何字符的第一個索引。
func BeforeNumbers(str string) string {
value := strings.IndexAny(str,"0123456789")
if value >= 0 && value <= len(str) {
return str[:value]
}
return str
}
將對字符串進行切片并將子切片返回到(但不包括)字符串中的第一個字符,該字符"0123456789"是任意數字。
稍后編輯:
使用 IndexFunc 而不是 IndexAny 可能會更好:
func BeforeNumbers(str string) string {
indexFunc := func(r rune) bool {
return r >= '0' && r <= '9'
}
value := strings.IndexFunc(str,indexFunc)
if value >= 0 && value <= len(str) {
return str[:value]
}
return str
}
這或多或少相當于循環版本,并消除了對長字符串的搜索以檢查我之前答案中的每個字符是否匹配。但我覺得它看起來比循環版本更干凈,這顯然是一種品味。
- 3 回答
- 0 關注
- 300 瀏覽
添加回答
舉報