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
}

运行效果:

大好世界

另外一种方式:

步骤:

  1. 先把字符串变成字符数组
  2. 然后通过数组改变索引对应的值
  3. 然后将数组转成新的字符串
func ModifyString(str string) string {
    strArray := []rune(str)

    strArray[0] = '大'

    str = string(strArray)

    return str
}

运行效果:

大好世界

猜你喜欢

转载自www.cnblogs.com/kaichenkai/p/10958939.html