我正在用 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中文網其他相關文章!