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