我正在比較字符串,有以下幾點:請注意,NEW 前面的 “是不同的?,F在,當像這樣調用我的函數時:my_func(a[18:], b[18:])結果字符串令人驚訝:我該怎么做才能把這個奇怪的符號剪掉,為什么它表現得像這樣?
2 回答

森欄
TA貢獻1810條經驗 獲得超5個贊
因為這種類型的引號是多字節字符,并且您正在將字符串拆分在字符的中間。您可以做的是轉換為,然后轉換回來:[]rune
https://play.golang.org/p/pw42sEwRTZd
s := "H界llo"
fmt.Println(s[1:3]) // ??
fmt.Println(string([]rune(s)[1:3])) // 界l

慕的地10843
TA貢獻1785條經驗 獲得超8個贊
另一個選項是軟件包:utf8string
package main
import "golang.org/x/exp/utf8string"
func main() {
s := utf8string.NewString(` 'Not Available') “NEW CREDIT" FROM customers;`)
t := s.Slice(18, s.RuneCount())
println(t == `“NEW CREDIT" FROM customers;`)
}
https://pkg.go.dev/golang.org/x/exp/utf8string
- 2 回答
- 0 關注
- 92 瀏覽
添加回答
舉報
0/150
提交
取消