亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

字符串 - 獲取數字前的字符

字符串 - 獲取數字前的字符

Go
蠱毒傳說 2021-07-26 16:17:18
我有一些字符串,例如E2 9NZ, N29DZ, EW29DZ。給定上面的示例E,我需要在第一個數字之前提取字符: , N, EW。我應該使用正則表達式嗎?該字符串包看起來真的不錯,但似乎并不來處理這種情況(特定類型之前提取的所有內容)。編輯:為了澄清“問題:”我不知道用什么方法是更地道,以去,也許有可能提供更好的性能。
查看完整描述

3 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

我認為最好的選擇是使用返回的索引strings.IndexAny,它將返回字符串中任何字符的第一個索引。


func BeforeNumbers(str string) string { 

    value := strings.IndexAny(str,"0123456789")

    if value >= 0 && value <= len(str) {

        return str[:value]

    }


    return str

}

將對字符串進行切片并將子切片返回到(但不包括)字符串中的第一個字符,該字符"0123456789"是任意數字。


稍后編輯:


使用 IndexFunc 而不是 IndexAny 可能會更好:


func BeforeNumbers(str string) string { 

    indexFunc := func(r rune) bool {

       return r >= '0' && r <= '9'

    }

    value := strings.IndexFunc(str,indexFunc)

    if value >= 0 && value <= len(str) {

        return str[:value]

    }


    return str

}

這或多或少相當于循環版本,并消除了對長字符串的搜索以檢查我之前答案中的每個字符是否匹配。但我覺得它看起來比循環版本更干凈,這顯然是一種品味。


查看完整回答
反對 回復 2021-08-02
  • 3 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號