問題復現:修改字符串的第一個中文
先對原字符串做切片,然后進行拼接,得到新的字符串
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 }
運行效果:
大好世界