ホームページ  >  記事  >  バックエンド開発  >  Go でルーンを文字列に変換するにはどうすればよいですか?

Go でルーンを文字列に変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-19 11:45:03330ブラウズ

How do I Convert a Rune to a String in Go?

Go でのルーンから文字列への変換

Go で Unicode 文字を扱う場合、ルーン ( Unicode 文字を表す整数) を文字列に変換します。 Go ではこのタスクに対して複数のアプローチが提供されているため、これは混乱を招く可能性があります。

Scanner.Scan() の使用 (誤)

提供されたコードでは、使用するコードは次のとおりです。 Scanner.Scan() を使用してルーンを文字列に変換します。ただし、Scanner.Scan() は字句解析を目的としており、ルーン文字を直接返すわけではないため、このアプローチは正しくありません。代わりに、トークンの種類 (scanner.Ident や scanner.Int など) を示す定数を返します。

Scanner.Next() の使用 (正解)

Toルーンを文字列に適切に変換するには、代わりに Scanner.Next() を使用する必要があります。この関数は、入力から次のルーンを読み取り、それを整数として返します。次に、strconv.QuoteRune() 関数を使用してルーンを文字列に変換できます。

var b scanner.Scanner
const a = `a`
b.Init(strings.NewReader(a))
c := b.Next()
fmt.Println(strconv.QuoteRune(c)) // Output: "'a'"

Rune から文字列への直接変換

単純に実行したい場合は、単一のルーンを文字列に変換するには、型変換を使用できます。 Rune は int32 のエイリアスであり、Go は組み込みの string() 関数を使用した整数値の文字列への変換をサポートしています。文字列内のルーン文字を反復処理するには、for ... range 構造を使用できます。この手法は、文字列内の各文字のインデックスとルーン値の両方を返します。

r := rune('a')
fmt.Println(string(r)) // Output: "a"

代替メソッド

ルーンを文字列に変換するその他のメソッドinclude:

for i, r := range "abc" {
    fmt.Printf("%d - %c (%v)\n", i, r, r)
}

// Output:
// 0 - a (97)
// 1 - b (98)
// 2 - c (99)

utf8.DecodeRuneInString(): 指定された文字列から単一の UTF-8 エンコードされたルーンをデコードします。

[]rune() :
    文字列をスライスに変換します。ルーン文字。

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

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