Go で発音区別記号の結合順序を維持しながら文字列を反転するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-29 04:31:02
オリジナル
902 人が閲覧しました

How to Reverse Strings in Go While Preserving the Order of Combining Diacritical Marks?

Go の文字列の反転

Go の文字列は、文字シーケンスではなくバイト ベクトルです。この区別は、言語内の文字列を逆にしようとするときに問題を引き起こします。次のコード スニペットは、Go で文字列を反転する基本的なアプローチを示しています。

<code class="go">import (
    "fmt"
    "rand"
    "time"
)

func invert() {
    var c = "A"
    var strs, aux string

    rand.Seed(time.Now().UnixNano())
    // 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)

        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>
ログイン後にコピー

ただし、結合文字 (他の文字を変更することを目的とした Unicode 文字) を処理すると、反転プロセスが複雑になります。これに対処するには、Andrew Sellers によって提案されたアプローチを検討してください。これには次のことが含まれます。

  1. 発音区別符号 (CDM) を組み合わせるための Unicode ブロック範囲のリスト
  2. ルーンの後の最初の文字列ルーンの読み取り
  3. CDM 順序を識別して保持し、反転配列に追加する前に通常のルーン文字と結合します

このアプローチにより、CDM 文字の適切な順序が保持され、絵文字を含む複雑な文字列の正確な反転が保証されます。およびその他の組み合わせ要素。

以上がGo で発音区別記号の結合順序を維持しながら文字列を反転するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!