首頁 > 後端開發 > Golang > 從單字中刪除特殊字符

從單字中刪除特殊字符

WBOY
發布: 2024-02-06 10:48:08
轉載
892 人瀏覽過

從單字中刪除特殊字符

問題內容

我正在用 go 編寫一個函數來清理單字,從而刪除每個單字開頭和結尾的特殊字元。

即:

  • .-你好,->你好
  • 「背靠背」->背靠背

透過逐個字母檢查每一端是否屬於 unicode.letter 集,得到以下結果,效果很好,但我想知道是否有更好或更有效的方法來做到這一點?我嘗試了 strings.trimleft/right,但隨後我必須定義自己的一組要刪除的字元。如果使用預先定義的集合就好了。

func TrimWord(word []rune) string {
    var prefix int = 0
    var suffix int = len(word)

    for x := 0; x < len(word); x++ {
        if !unicode.IsLetter(word[x]) {
            prefix++
        } else {
            break
        }
    }

    for x := len(word) - 1; x >= 0; x-- {
        if suffix == prefix {
            break
        }
        if !unicode.IsLetter(word[x]) {
            suffix--
        } else {
            break
        }
    }
    return string(word[prefix:suffix])
}
登入後複製


正確答案


package main

import (
    "fmt"
    "strings"
    "unicode"
)

func trimword(s string) string {
    return strings.trimfunc(s, func(r rune) bool {
        return !unicode.isletter(r)
    })
}

func main() {
    fmt.println(trimword(`.-hello,`))       // -> hello
    fmt.println(trimword(`"back-to-back"`)) // -> back-to-back
}
登入後複製

//m.sbmmt.com/link/55053683268957697aa39fba6f231c68

hello
back-to-back
登入後複製

套件字串

func TrimFunc(s string, f func(rune) bool) string
登入後複製

trimfunc 傳回字串 s 的一個切片,其中刪除了滿足 f(c) 的所有前導和尾隨 unicode 代碼點 c。

以上是從單字中刪除特殊字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板