如何索引Golangstring中的字符?
如何获得“E”输出而不是69?
package main import "fmt" func main() { fmt.Print("HELLO"[1]) }
Golang是否有将字符转换为字节的function?
解释的string文字是使用单个字符(可能是多字节)UTF-8编码的双引号“”之间的字符序列。 在UTF-8中,ASCII字符是对应于前128个Unicode字符的单字节。 string的行为像字节片。 符文是标识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界
请参阅转到“编程语言规范”部分。
这个怎么样?
fmt.Printf("%c","HELLO"[1])
正如Peter指出的那样,为了不仅仅允许ASCII:
fmt.Printf("%c", []rune("HELLO")[1])
Go并没有像这样的字符types。 字节通常用于ASCII字符,符号用于Unicode字符,但它们都只是整数types(uint8和int32)的别名。 所以如果你想强制它们被打印成字符而不是数字,你需要使用Printf("%c", x)
。 %c
格式规范适用于任何整数types。
将char解释为string的一般解决scheme是string("HELLO"[1])
。
Rich的解决scheme当然也适用。
另一种隔离string中的字符的解决scheme
package main import "fmt" func main() { var word string = "ZbjTS" // PRINT fmt.Println(word) yo := string([]rune(word)[0]) fmt.Println(yo) //INDEX x :=0 for x < len(word){ yo := string([]rune(word)[x]) fmt.Println(yo) x+=1 } }
对于string数组也是:
fmt.Println(string([]rune(sArray[0])[0]))
// =注释行