问题复现:修改字符串的第一个中文
先对原字符串做切片,然后进行拼接,得到新的字符串
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
}
运行效果:
大好世界