web-dev-qa-db-ja.com

Golang文字列の文字にインデックスを付ける方法は?

69ではなく「E」出力を取得する方法は?

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1])
}

Golangには、文字をバイトに、またはその逆に変換する機能がありますか?

68
user977828

解釈された文字列リテラルは、個々の文字の(おそらくマルチバイトの)UTF-8エンコードを使用した二重引用符 ""の間の文字シーケンスです。 UTF-8では、ASCII文字は、最初の128個のUnicode文字に対応するシングルバイトです。文字列は、バイトのスライスのように動作します。ルーンは、Unicodeコードポイントを識別する整数値です。したがって、

package main

import "fmt"

func main() {
    fmt.Println(string("Hello"[1]))              // ASCII only
    fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
    fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}

出力:

e
e
界

読む:

Go Programming Language Specification セクション Conversions

Goブログ:Goの文字列、バイト、ルーン文字、および文字

115
peterSO

this

fmt.Printf("%c","HELLO"[1])

Peterが指摘しているように、単なるASCII以上のものを許可するには:

fmt.Printf("%c", []rune("HELLO")[1])
15
Rich Churcher

Goには実際には文字タイプがありません。バイトはASCII文字によく使用され、ルーンはUnicode文字に使用されますが、どちらも整数型(uint8およびint32)のエイリアスにすぎません。したがって、それらを数字ではなく文字として印刷する場合は、Printf("%c", x)を使用する必要があります。 %c形式仕様は、任意の整数型に対して機能します。

7
andybalholm

スライスを介して行うこともできます

package main

import "fmt"

func main() {
    fmt.Print("HELLO"[1:2])
}
5
Samkit Jain

文字を文字列として解釈する一般的な解決策は、string("HELLO"[1])です。

もちろん、Richのソリューションも機能します。

4
Thomas Kappler

インデックスで文字を取得するにはこれを試してください

package main

import (
      "fmt"
      "strings"
)

func main() {
   str := strings.Split("HELLO","")
    fmt.Print(str[1])
}
0
Anshu