Saya sedang menulis fungsi dalam go untuk membersihkan perkataan individu, dengan itu mengalih keluar aksara khas pada permulaan dan akhir setiap perkataan.
Iaitu:
Saya mendapat hasil berikut dengan menyemak setiap huruf akhir demi huruf untuk melihat sama ada ia tergolong dalam set unicode.letter, yang berfungsi dengan baik, tetapi saya tertanya-tanya sama ada terdapat cara yang lebih baik atau lebih cekap untuk melakukan ini? Saya mencuba strings.trimleft/right, tetapi kemudian saya terpaksa menentukan set aksara saya sendiri untuk dialih keluar. Adalah baik untuk menggunakan koleksi yang telah ditetapkan.
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 mengembalikan sekeping rentetan s dengan semua mata kod unikod c di hadapan dan di belakang dialih keluar yang memenuhi f(c).
Atas ialah kandungan terperinci Alih keluar aksara khas daripada perkataan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!