ホームページ > バックエンド開発 > Golang > Go の UTF-8 文字列の文字に正しくインデックスを付けるにはどうすればよいですか?

Go の UTF-8 文字列の文字に正しくインデックスを付けるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-17 18:17:10
オリジナル
123 人が閲覧しました

How to Correctly Index Characters in Go's UTF-8 Strings?

Golang 文字列の文字インデックス作成: UTF-8 デコード

Golang の文字列リテラルは UTF-8 でエンコードされた文字シーケンスですが、個々の文字のインデックスを作成します配列のような構文 string[index] を使用して位置を指定すると、予期しない結果が生じる可能性があります。これは、UTF-8 文字が複数のバイトを占める可能性があり、バイト位置によるインデックス作成により UTF-8 エンコーディングが壊れる可能性があるためです。

個々の文字を正確にインデックスして取得するために、Golang にはいくつかのオプションが用意されています。

Unicode コードポイントの使用(Runes)

  • string([]rune("string")[index]): 文字列をルーンのスライスに変換します。各ルーンは、 Unicode コードポイント。このアプローチにより、UTF-8 のバイト位置に関係なく、一貫した文字インデックスが作成されます。

例:

package main

import "fmt"

func main() {
    fmt.Println(string([]rune("HELLO, 世界")[1])) // "E"
    fmt.Println(string([]rune("HELLO, 世界")[8])) // "界"
}
ログイン後にコピー

バイトの変換先文字

  • string("byte"): 半角 ASCII 文字を文字列に変換します。これは ASCII 文字 (最初の 128 Unicode 文字) にのみ適用されることに注意してください。

例:

package main

import "fmt"

func main() {
    fmt.Println(string("HELLO"[1])) // "e"
}
ログイン後にコピー

以上がGo の UTF-8 文字列の文字に正しくインデックスを付けるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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