ホームページ > バックエンド開発 > Golang > Go で Unicode 文字のルーン文字を処理しながら文字列を反転するにはどうすればよいですか?

Go で Unicode 文字のルーン文字を処理しながら文字列を反転するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-27 22:59:29
オリジナル
255 人が閲覧しました

How do you Reverse a String in Go while Handling Runes for Unicode Characters?

Go での文字列の反転: ルーン文字と Unicode 文字の処理

Go で文字列を操作すると、Unicode 文字で表現される場合に問題が発生する可能性があります。ルーンとして。文字列が文字シーケンスとして扱われる C とは異なり、Go は文字列をバイトのベクトルとして扱います。これに対処するには、文字レベルの操作を実行するためにバイトとルーンの間で変換する必要があります。

提供されたコードを調べてみましょう:

<code class="go">func inverte() {
    var strs, aux string

    // Generate 5 strings with random characters of sizes 100, 200, 300, 400, and 500
    for i := 1; i < 6; i++ {
        strs = randomString(i * 100)
        fmt.Print(strs)

        // Attempt to reverse the characters
        for i2, j := 0, len(strs); i2 < j; i2, j = i+1, j-1 {
           aux = strs[i2]
           strs[i2] = strs[j]
           strs[j] = aux
       }
   }
}</code>
ログイン後にコピー

コードの問題は、文字列の割り当てに起因しています。 [i2] = strs[j]。strs[i2] と strs[j] は両方ともバイトです。ただし、文字を交換するには、ルーンを操作する必要があります。これに対処するには、ルーン関数を使用してバイト値をルーン文字に変換できます。

<code class="go">for i2, j := 0, len(strs); i2 < j; i2, j = i+1, j-1 {
    r1 := rune(strs[i2])
    r2 := rune(strs[j])
    strs[i2] = byte(r2)
    strs[j] = byte(r1)
}</code>
ログイン後にコピー

ルーン文字に変換すると、文字レベルの交換操作を正しく実行できます。

以上がGo で Unicode 文字のルーン文字を処理しながら文字列を反転するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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