String 如何删除不可打印字符

String 如何删除不可打印字符,string,go,unicode,utf-8,String,Go,Unicode,Utf 8,我正在尝试从Golang中的字符串中删除不可打印的字符 输出: Douglas​ 10 Douglas 7 第一个字符串的末尾有一个不可见的字符 我曾尝试替换非ASCII字符,但它也删除了重音 如何仅删除不可打印的字符?前言:我在库中发布了此实用程序,请参阅 你可以移除那些报告错误的符文。要从字符串中删除某些符文,可以使用 例如: invisibleChars := "Douglas​" fmt.Printf("%q\n", invisibleChars) fmt.Println(len(in

我正在尝试从Golang中的字符串中删除不可打印的字符

输出:

Douglas​
10
Douglas
7
第一个字符串的末尾有一个不可见的字符

我曾尝试替换非ASCII字符,但它也删除了重音

如何仅删除不可打印的字符?

前言:我在库中发布了此实用程序,请参阅

你可以移除那些报告错误的符文。要从字符串中删除某些符文,可以使用

例如:

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))
这将在以下位置进行尝试:

invisibleChars=strings.TrimFuncinvisibleChars,funcr符文布尔{ return!unicode.IsGraphicr } 去操场:

请参阅此。icza的回答很好。
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