Go 修改字符串中的字符,中文乱码
问题复现:修改字符串的第一个中文
先对原字符串做切片,然后进行拼接,得到新的字符串
func ModifyString(str string) string { tempStr := str[1:] str = "大" + tempStr return str } func main(){ ret := ModifyString("你好世界") fmt.Println(ret) }
运行效果:
大��好世界
切片默认是根据 byte 进行切割的,中文是 3 个 byte 组成,导致上面残留两个多余的 byte
解决方法:
那么在切片时指定 3 个 byte 尝试下:
func ModifyString(str string) string { tempStr := str[3:] str = "大" + tempStr return str }
运行效果:
大好世界
另外一种方式:
步骤:
- 先把字符串变成字符数组
- 然后通过数组改变索引对应的值
- 然后将数组转成新的字符串
func ModifyString(str string) string { strArray := []rune(str) strArray[0] = '大' str = string(strArray) return str }
运行效果:
大好世界
- 上一篇 »php正则,删除字符串中的中英文标点符号
- 下一篇 »java判断获取到的中文字符串是否乱码