ホームページ >バックエンド開発 >Golang >Runes パッケージを使用して Go の文字列からアクセントを削除するにはどうすればよいですか?

Runes パッケージを使用して Go の文字列からアクセントを削除するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 00:15:03200ブラウズ

How Can I Use the Runes Package to Remove Accents From Strings in Go?

Go のルーン パッケージ: アクセント付き文字の変換

Go では、アクセント付き文字をアクセント付きでない同等の文字に変換するのが一般的なタスクです。 1 つのアプローチには、norm や text などの Unicode パッケージの使用が含まれます。ただし、これらのパッケージは初心者にとって複雑な場合があります。

より簡単な解決策は、Go 1.5 (2015 年 8 月リリース) および Go 1.6 (2016 年第 1 四半期リリース予定) で導入された runes パッケージを使用することです。 runes パッケージは、通常、アクセントの原因となる非スペースマーク (Mn) を削除する、より簡単な方法を提供します。

これは、runes パッケージを使用して文字列からアクセントを削除する方法の例です:

<code class="go">import (
    "fmt"
    "runes"
    "bytes"
    "code.google.com/p/go.text/transform"
    "code.google.com/p/go.text/unicode/norm"
)

func main() {
    r := bytes.NewBufferString("Your Śtring")
    t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
    r = transform.NewReader(r, t)
    fmt.Println(r)

    // Output:
    // Your String
}</code>

このコードは、transform.Chain 関数を使用して、文字列に一連の変換を適用します。まず、文字列が Unicode 正規化形式 (NFD) に分解され、基本文字がアクセントから分離されます。次に、runes.Remove 関数を適用して、Mn (非スペース マーク) カテゴリに該当するルーンを除外します。最後に、文字列は正規化された形式 (NFC) に戻されて、残っている発音記号がすべて削除されます。

その結果、アクセント付き文字列「Your Śtring」は、非アクセント記号が削除された後、「Your String」に変換されます。 -間隔マーク

以上がRunes パッケージを使用して Go の文字列からアクセントを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。