我正在用 go 编写一个函数来清理单个单词,从而删除每个单词开头和结尾的特殊字符。
即:
通过逐个字母检查每一端是否属于 unicode.letter 集,得到以下结果,效果很好,但我想知道是否有更好或更有效的方法来做到这一点?我尝试了 strings.trimleft/right,但随后我必须定义自己的一组要删除的字符。如果使用预定义的集合就好了。
func TrimWord(word []rune) string { var prefix int = 0 var suffix int = len(word) for x := 0; x < len(word); x++ { if !unicode.IsLetter(word[x]) { prefix++ } else { break } } for x := len(word) - 1; x >= 0; x-- { if suffix == prefix { break } if !unicode.IsLetter(word[x]) { suffix-- } else { break } } return string(word[prefix:suffix]) }
package main import ( "fmt" "strings" "unicode" ) func trimword(s string) string { return strings.trimfunc(s, func(r rune) bool { return !unicode.isletter(r) }) } func main() { fmt.println(trimword(`.-hello,`)) // -> hello fmt.println(trimword(`"back-to-back"`)) // -> back-to-back }
//m.sbmmt.com/link/55053683268957697aa39fba6f231c68
hello back-to-back
func TrimFunc(s string, f func(rune) bool) string
trimfunc 返回字符串 s 的一个切片,其中删除了满足 f(c) 的所有前导和尾随 unicode 代码点 c。
以上是从单词中删除特殊字符的详细内容。更多信息请关注PHP中文网其他相关文章!