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 サイトの他の関連記事を参照してください。