我在Go Playground中运行此代码:
fmt.Println(strings.ContainsRune("\xa0", '\xa0'))
我想知道,为什么输出false
?根据{{3}},它说:
如果Unicode代码点r在s内,则ContainsRune返回true。
在我看来,代码点在那里,它会给false
作为回应似乎很奇怪。
答案 0 :(得分:5)
" \ X0A"不是unicode代码点。
fmt.Println(strings.ContainsRune("\u00a0", '\u00a0'))
按预期工作。
答案 1 :(得分:3)
因为它不是有效的unicode代码点,所以strings.IndexRune
func IndexRune(s string, r rune) int {
switch {
case r < 0x80:
.....
default:
.....
}
return -1
}
如果您尝试utf8.ValidString("\xa0")
,则会返回false。