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
}

運行效果:

大好世界

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM