6

文字列の要素のタイプはbyteであり、通常のインデックス作成操作を使用してアクセスできます。

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

"some" [1]-> "o"

4

3 に答える 3

10

最も簡単な解決策は、それをルーンの配列に変換することです。

var runes = []rune("someString")

文字列を反復処理する場合、変換は必要ないことに注意してください。効果的な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
于 2012-10-29T10:54:42.013 に答える
4

Go文字列は通常、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

注:多くの場合、インデックスでUnicodeの「文字」にアクセスしたいという要望は設計上の誤りです。ほとんどのテキストデータは順番に処理されます。

于 2012-10-29T10:55:53.380 に答える
0

別のオプションはパッケージutf8stringです:

package main
import "golang.org/x/exp/utf8string"

func main() {
   s := utf8string.NewString("")
   t := s.At(2)
   println(t == '')
}

https://pkg.go.dev/golang.org/x/exp/utf8string

于 2021-05-19T21:51:31.087 に答える