如何获得一个"E"的输出,而不是69?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
Golang有将字符转换为字节和将字节转换为字符的函数吗?
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
界
阅读:
这个怎么样?this
fmt.Printf("%c","HELLO"[1])
fmt.Printf("%c", []rune("HELLO")[1])
也可以通过切片完成
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
注意:此解决方案仅适用于ASCII字符。
"हैलो"[:1]
会返回�。 - vladkras您也可以尝试将其强制转换为字符串。
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1]))
}
Go语言本身并没有字符类型。byte通常用于ASCII字符,rune用于Unicode字符,但它们都只是整数类型的别名(uint8和int32)。因此,如果您想要将它们强制输出为字符而不是数字,则需要使用Printf("%c", x)
。 %c
格式规范适用于任何整数类型。
将一个字符解释为字符串的常规方法是 string("HELLO"[1])
。
当然,Rich的方法也有效。
package main
import (
"fmt"
"strings"
)
func main() {
str := strings.Split("HELLO","")
fmt.Print(str[1])
}
字符串中的字符是符文,所以要打印它们,你必须将它们转换回字符串。
fmt.Print(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++
。请在回答问题之前先学习语言的基础知识。 - Dave C解决方案将是:
package main
import "fmt"
func main() {
str := "HELLO"
string(str[0])//H
string(str[1])//E
string(str[2])//L
string(str[3])//L
string(str[4])//O
}
1000000*4 = 4000000字节的内存
。 utf-8对于ASCII字符使用1个字节。但是每个字符的符文使用4个字节。这意味着可以节省大量内存。 我猜这需要位编码,但对于大文本来说这是值得的。 - SeanTolstoyevski