我正在尝试从 Golang 中的字符串中删除不可打印的字符。
https://play.golang.org/p/Touihf5-hGH https://play.golang.org/p/Touihf5-hGH
invisibleChars := "Douglas"
fmt.Println(invisibleChars)
fmt.Println(len(invisibleChars))
normal := "Douglas"
fmt.Println(normal)
fmt.Println(len(normal))
Output:
Douglas
10
Douglas
7
第一个字符串末尾有一个不可见的字符。
我尝试替换非 ASCII 字符,但它也删除了重音符号。
如何仅删除不可打印的字符?
前言:我在我的github.com/icza/gox https://github.com/icza/gox图书馆,参见stringsx.Clean() https://godoc.org/github.com/icza/gox/stringsx#Clean.
你可以在哪里删除符文unicode.IsGraphic() https://golang.org/pkg/unicode/#IsGraphic or unicode.IsPrint() https://golang.org/pkg/unicode/#IsPrint报道不实。删除某些rune
s 来自字符串,您可以使用strings.Map() https://golang.org/pkg/strings/#Map.
例如:
invisibleChars := "Douglas"
fmt.Printf("%q\n", invisibleChars)
fmt.Println(len(invisibleChars))
clean := strings.Map(func(r rune) rune {
if unicode.IsGraphic(r) {
return r
}
return -1
}, invisibleChars)
fmt.Printf("%q\n", clean)
fmt.Println(len(clean))
clean = strings.Map(func(r rune) rune {
if unicode.IsPrint(r) {
return r
}
return -1
}, invisibleChars)
fmt.Printf("%q\n", clean)
fmt.Println(len(clean))
这个输出(尝试一下去游乐场 https://play.golang.org/p/7HS2J2pIDvs):
"Douglas\u200b"
10
"Douglas"
7
"Douglas"
7
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)