第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何刪除不可打印的字符

如何刪除不可打印的字符

Go
慕森卡 2023-08-07 14:34:00
我正在嘗試從 Golang 中的字符串中刪除不可打印的字符。https://play.golang.org/p/Touihf5-hGHinvisibleChars := "Douglas"fmt.Println(invisibleChars)fmt.Println(len(invisibleChars))normal := "Douglas"fmt.Println(normal)fmt.Println(len(normal))輸出:Douglas10Douglas7第一個字符串末尾有一個不可見的字符。我嘗試替換非 ASCII 字符,但它也刪除了重音符號。如何僅刪除不可打印的字符?
查看完整描述

3 回答

?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗 獲得超2個贊

前言:我在我的github.com/icza/gox庫中發(fā)布了這個實用程序,請參閱stringsx.Clean()。


您可以在報告錯誤的地方刪除符unicode.IsGraphic()unicode.IsPrint()rune要從字符串中刪除某些s,您可以使用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))

輸出(在Go Playground上嘗試):


"Douglas\u200b"

10

"Douglas"

7

"Douglas"

7


查看完整回答
反對 回復(fù) 2023-08-07
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗 獲得超9個贊

invisibleChars = strings.TrimFunc(invisibleChars, func(r rune) bool {

        return !unicode.IsGraphic(r)

    })


查看完整回答
反對 回復(fù) 2023-08-07
?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗 獲得超3個贊

僅供參考,


我經(jīng)常使用strings.TrimFunc,但我發(fā)現(xiàn)strings.Map()檢測不可見字符比strings.TrimFunc.


strings.TrimFunc無法檢測輸入字符是否為"Douglas\u200b" + "bar"。如果后面跟有“bar”,則以下示例將失敗。結(jié)果變成了13而不是10。


func ExampleTrimFunc() {

    invisibleChars := "Douglas\u200b" + "bar"

    invisibleChars = strings.TrimFunc(invisibleChars, func(r rune) bool {

        return !unicode.IsGraphic(r)

    })


    fmt.Println(invisibleChars)

    fmt.Println(len(invisibleChars))


    normal := "Douglasbar"

    fmt.Println(normal)

    fmt.Println(len(normal))


    // Output:

    // Douglasbar

    // 10

    // Douglasbar

    // 10

}

但是,strings.Map()如下使用是成功的。


 func ExampleTrimFunc() {

    invisibleChars := "Douglas\u200b" + "bar"

-   invisibleChars = strings.TrimFunc(invisibleChars, func(r rune) bool {

-       return !unicode.IsGraphic(r)

-   })

+   invisibleChars = strings.Map(func(r rune) rune {

+       if unicode.IsGraphic(r) {

+           return r

+       }

+       return -1

+   }, invisibleChars)

 

    fmt.Println(invisibleChars)

    fmt.Println(len(invisibleChars))

 

    normal := "Douglasbar"

    fmt.Println(normal)

    fmt.Println(len(normal))

 

    // Output:

    // Douglasbar

    // 10

    // Douglasbar

    // 10

 }


查看完整回答
反對 回復(fù) 2023-08-07
  • 3 回答
  • 0 關(guān)注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號