ホームページ > バックエンド開発 > Golang > Go で UTF-8 文字列から発音記号を効率的に削除するにはどうすればよいですか?

Go で UTF-8 文字列から発音記号を効率的に削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-08 14:03:11
オリジナル
545 人が閲覧しました

How to Efficiently Remove Diacritics from UTF-8 Strings in Go?

Go で発音記号を削除する

UTF8 でエンコードされた文字列を操作する場合、「žůžo」のアクセントなどの発音記号を削除する必要がある場合があります。 」で「ズゾ」となります。このようなシナリオを効率的に処理するために、Go で利用できる標準ライブラリとテクニックがあります。

1 つのアプローチには、unicode.Is() 関数を利用して発音記号 (非スペース記号の「Mn」として分類される文字) を識別することが含まれます。

次のコード スニペットは、unicode/norm と golang.org/x/text/transform を利用して特定の文字列から発音記号を削除する方法を示しています。パッケージ:

package main

import (
    "fmt"
    "unicode"

    "golang.org/x/text/transform"
    "golang.org/x/text/unicode/norm"
)

func isMn(r rune) bool {
    return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks
}

func main() {
    t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)
    result, _, _ := transform.String(t, "žůžo")
    fmt.Println(result)
}
ログイン後にコピー

このコードは、一連の変換を適用することで発音記号を削除します:

  1. 正規化形式分解 (NFD): 文字列をその文字列に分解します。基本 Unicode 文字を含むdiacritics.
  2. RemoveFunc(isMn): 非スペース記号 (発音記号) である文字を除外します。
  3. 正規化フォーム構成 (NFC): 再構成します文字列なしdiacritics.

その結果、出力は例のように、発音記号が取り除かれた文字列になります。 「ズゾ」。

以上がGo で UTF-8 文字列から発音記号を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート