69ではなく「E」出力を取得するにはどうすればよいですか?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Golangには、文字をバイトに、またはその逆に変換する機能がありますか?
69ではなく「E」出力を取得するにはどうすればよいですか?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Golangには、文字をバイトに、またはその逆に変換する機能がありますか?
回答:
解釈される文字列リテラルは、個々の文字の(場合によってはマルチバイト)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
界
読んだ:
変換に関するプログラミング言語仕様のセクションに移動しますます。
スライスでもできます
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
注:このソリューションはASCII文字に対してのみ機能します。
文字列で型キャストすることもできます。
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
文字列内の文字を分離する別のソリューション
package main
import "fmt"
func main() {
var word string = "ZbjTS"
// P R I N T
fmt.Println(word)
yo := string([]rune(word)[0])
fmt.Println(yo)
//I N D E X
x :=0
for x < len(word){
yo := string([]rune(word)[x])
fmt.Println(yo)
x+=1
}
}
文字列配列の場合も:
fmt.Println(string([]rune(sArray[0])[0]))
// =コメント行
len("cafés")
>len([]rune("cafés"))
そして、O(n²)の反復ごとに文字列を再変換する可能性があります。ただ実行してくださいfor _, r := range word { fmt.Printf("%c", r) }
。本当にインデックスでループしたい場合for x := 0; x < limit; x++
。答える前に言語の基本を学んでください。質問
"हैलो"[:1]
、それはあなたが与える