[英]How to check if there is a special character in string or if a character is a special character in GoLang
[英]How to access string as character value
http://play.golang.org/p/ZsALO8oF3W
我想遍历一个字符串并返回字符值。 我如何,不返回每个字母的数值,并返回实际字符?
现在我得到了这个
0 72 72
1 101 101
2 108 108
3 108 108
4 111 111
我想要的输出是
0 h h
1 e e
2 l l
3 l l
4 o o
package main
import "fmt"
func main() {
str := "Hello"
for i, elem := range str {
fmt.Println(i, str[i], elem)
}
for elem := range str {
fmt.Println(elem)
}
}
谢谢,
对于字符串值,“range”子句迭代从字节索引0开始的字符串中的Unicode代码点。在连续迭代中,索引值将是连续UTF-8编码的代码点的第一个字节的索引。字符串和rune类型的第二个值将是相应代码点的值。 如果迭代遇到无效的UTF-8序列,则第二个值将是0xFFFD,即Unicode替换字符,下一次迭代将在字符串中前进一个字节。
例如,
package main
import "fmt"
func main() {
str := "Hello"
for _, r := range str {
c := string(r)
fmt.Println(c)
}
fmt.Println()
for i, r := range str {
fmt.Println(i, r, string(r))
}
}
输出:
H
e
l
l
o
0 72 H
1 101 e
2 108 l
3 108 l
4 111 o
package main使用Printf表示您要打印字符。
import "fmt"
func main() {
str := "Hello"
for i, elem := range str {
fmt.Printf("%d %c %c\n", i, str[i], elem)
}
}
迭代字符串中字符的方式是可行的(尽管str [i]和elem是彼此的重复)。 您拥有正确的数据。
为了使其正确显示,您只需要使用正确的格式输出(即解释为unicode字符而不是int)。
更改:
fmt.Println(i, str[i], elem)
至:
fmt.Printf("%d %c %c\n", i, str[i], elem)
%c
是每个Printf文档对应的Unicode代码点表示的字符 : http : //golang.org/pkg/fmt/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.