1

我正在比较字符串,有以下内容:

在此处输入图像描述

请注意,NEW 前面的“”是不同的。

现在当像这样调用我的函数时:

my_func(a[18:], b[18:])

结果字符串令人惊讶:

在此处输入图像描述

我该怎么做才能去掉这个奇怪的符号,为什么它会这样?

4

2 回答 2

7

因为这种类型的引号是一个多字节字符,并且您在字符中间分割字符串。您可以做的是转换为 an[]rune然后再转换回:

https://play.golang.org/p/pw42sEwRTZd

s := "H界llo"
fmt.Println(s[1:3])                 // ��
fmt.Println(string([]rune(s)[1:3])) // 界l
于 2021-06-03T22:25:05.377 回答
3

另一种选择是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

于 2021-06-03T22:56:14.443 回答