ホームページ >バックエンド開発 >Golang >Go で文字の Unicode 値を取得する方法は?

Go で文字の Unicode 値を取得する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 07:36:01611ブラウズ

How to Get the Unicode Value of a Character in Go?

Go JavaScript の charCodeAt() メソッドと同等

JavaScript の charCodeAt() メソッドは、特定の位置にある文字の Unicode 数値を取得します。例:

<code class="javascript">"s".charCodeAt(0) // returns 115</code>

Go では、文字タイプは rune で、これは int32 のエイリアスであり、それ自体が数値です。したがって、直接印刷することで Unicode 数値を取得できます。

指定した位置の文字を取得するには、文字列を []rune に変換してインデックスを使用するのが最も簡単な方法です。文字列をルーンに変換する方法は、型変換 []rune("some string"):

<code class="go">fmt.Println([]rune("s")[0])</code>

出力:

115

文字として出力するには、% を使用します。 c フォーマット文字列:

<code class="go">fmt.Println([]rune("absdef")[2])      // Also prints 115
fmt.Printf("%c", []rune("absdef")[2]) // Prints s</code>

さらに、文字列の for range は文字列内のルーン文字を反復するため、それも使用できます。 []rune に変換する場合と比較して、この方法はより効率的です:

<code class="go">i := 0
for _, r := range "absdef" {
    if i == 2 {
        fmt.Println(r)
        break
    }
    i++
}</code>

範囲の戻り値はバイト位置であるため、カウンター i は別個のカウンターである必要があり、ループ反復変数にすることはできないことに注意してください。ルーンインデックスではありません (文字列に UTF-8 表現のマルチバイト文字が含まれている場合は異なります)。

は関数にラップされます:

<code class="go">func charCodeAt(s string, n int) rune {
    i := 0
    for _, r := range s {
        if i == n {
            return r
        }
        i++
    }
    return 0
}</code>

最後に、Go の文字列は、UTF-8 でエンコードされたテキストのバイト シーケンスである []byte に格納されることに注意してください (詳細については、記事「Go の文字列、バイト、ルーン、および文字」を参照してください)。文字列でコードが 127 未満の文字を使用することが保証されている場合は、バイトを直接使用できます。つまり、Go で文字列にインデックスを付けると、そのバイトにインデックスが付けられます。たとえば、「s」[0] は文字「s」のバイト値 115 です。

<code class="go">fmt.Println("s"[0])      // Prints 115
fmt.Println("absdef"[2]) // Prints 115</code>

以上がGo で文字の Unicode 値を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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