中文字符串遍历
问题
置信很多人都遇到过中文字符串遍历乱码的状况。
遍历字符串个别有两种形式:下标遍历,for…range,如果字符换蕴含中文,应用下标遍历时则会呈现乱码。
解决办法
将字符串转为 []rune 类型,再应用下边遍历则不会呈现乱码。
package main
import "fmt"
func main(){
//str := "abc"
str := "hi, 你好"
// 下标遍历
for i,v := range str{fmt.Printf("str[%d]=%v\n", i, string(v))
}
//for...range 遍历
for i:=0; i<len(str); i++{fmt.Printf("str[%d]=%v\n", i, string(str[i]))
}
// 转为 []rune 类型,再下边遍历
strRune := []rune(str)
for i:=0; i<len(strRune); i++{fmt.Printf("strRune[%d]=%v\n", i, string(strRune[i]))
}
}