在 go 中创建子字符串会创建一种新的符号
Creating a substring in go creates a new kind of symbol
我正在比较字符串,有以下内容:
请注意NEW前面的"是不同的。
现在像这样调用我的函数时:
my_func(a[18:], b[18:])
生成的字符串令人惊讶:
我该怎么做才能去掉这个奇怪的符号,为什么它会这样?
因为这种类型的引号是多字节字符,而您是在一个字符的中间拆分字符串。你可以做的是转换为 []rune
然后转换回来:
https://play.golang.org/p/pw42sEwRTZd
s := "H界llo"
fmt.Println(s[1:3]) // ��
fmt.Println(string([]rune(s)[1:3])) // 界l
另一个选项是 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;`)
}
我正在比较字符串,有以下内容:
请注意NEW前面的"是不同的。
现在像这样调用我的函数时:
my_func(a[18:], b[18:])
生成的字符串令人惊讶:
我该怎么做才能去掉这个奇怪的符号,为什么它会这样?
因为这种类型的引号是多字节字符,而您是在一个字符的中间拆分字符串。你可以做的是转换为 []rune
然后转换回来:
https://play.golang.org/p/pw42sEwRTZd
s := "H界llo"
fmt.Println(s[1:3]) // ��
fmt.Println(string([]rune(s)[1:3])) // 界l
另一个选项是 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;`)
}