zoukankan      html  css  js  c++  java
  • 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
    }
    

    运行效果:

    大好世界
    
    每天都要遇到更好的自己.
  • 相关阅读:
    命令别名与历史命令
    Shell的变量功能
    Shell的变量功能
    认识BASH这个Shell
    vim程序编辑器
    其他vim使用注意事项
    vim的额外功能
    六、集合
    五、字典
    四、列表 元组
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/10958939.html
Copyright © 2011-2022 走看看