如何删除不可打印的字符 [英] How to remove non-printable characters
本文介绍了如何删除不可打印的字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试从Golang中的字符串中删除不可打印的字符.
I'm trying to remove non-printable characters from a string in Golang.
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))
输出:
Douglas
10
Douglas
7
第一个字符串的末尾有一个不可见的字符.
The first string has an invisible char at the end.
我尝试替换非ASCII字符,但它也删除了重音符号.
I've tried to replace non-ASCII characters, but it removes accents too.
如何仅删除不可打印的字符?
How can I remove non-printable characters only?
推荐答案
前言:我在 github.com/icza/gox
库,请参见您可以删除符文,其中 unicode.IsGraphic()
或 unicode.IsPrint()
报告为false.要从字符串中删除某些 rune
,可以使用 字符串.Map()
.
You could remove runes where unicode.IsGraphic()
or unicode.IsPrint()
reports false. To remove certain rune
s from a string, you may use 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))
此输出(在转到操场上尝试):
"Douglas\u200b"
10
"Douglas"
7
"Douglas"
7
这篇关于如何删除不可打印的字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文