2012-10-29 17 views
6

文字列の要素はバイト型で、 通常のインデックス処理を使用してアクセスできます。文字列としてのインデックス文字列

文字列の要素をcharとして取得するにはどうすればよいですか?

"一部" [1] - > "O"

答えて

10

最も簡単な解決策は、ルーン文字の配列に変換することです:

var runes = []rune("someString") 

(注)上で反復する場合ということ文字列を変換する必要はありません。 Effective Goからこの例を参照してください:

for pos, char := range "日本語" { 
    fmt.Printf("character %c starts at byte position %d\n", char, pos) 
} 

これは

character 日 starts at byte position 0 
character 本 starts at byte position 3 
character 語 starts at byte position 6 
4

囲碁の文字列を出力し、通常はあるが、必ずしも、UTF-8エンコードされません。 Unicode文字列の場合、 "char [acter]"という用語はかなり複雑で、ルーン(コードポイント)とUnicode文字のジェネラル/ユニークバイジェクションはありません。

とにかく一方は簡単な変換を使用して、そこにスライスし、使用インデックスにコードポイント(ルーン)で動作することができる:

package main 

import "fmt" 

func main() { 
     utf8 := "Hello, 世界" 
     runes := []rune(utf8) 
     fmt.Printf("utf8:% 02x\nrunes: %#v\n", []byte(utf8), runes) 
} 

またここで:http://play.golang.org/p/qWVSA-n93o

注:ユニコードにアクセスすることがしばしば要望をインデックスによる "文字"は設計ミスです。ほとんどのテキストデータは順次処理されます。

関連する問題