首页 > 解决方案 > 如何修改字符串中的特定字符

问题描述

在 C 中,我们将字符串的字符定义为 Char。所以我想在 Go 中改变一个字符串的字符。

if sum%11 != int(str[strlen-1]) {
    str[strlen-1] = byte(sum % 11)
    //fmt.Printf("%T %T\n", str[strlen-1], byte(sum%11))
} else {
    fmt.Println(sum)
}

但是会报错“cannot assign to str[strlen - 1]”。str[strlen-1] 和 byte(sum%11) 都是 uint8。为什么是错的?我应该如何转换?

标签: go

解决方案


与 C 不同,Go 字符串是不可变的,因此您不能修改字符串中的单个字节。但是,您可以将字符串转换为字节数组,对其进行更改,然后将该字节数组转换为字符串。

arr:=[]byte(str)
arr[strlen-1]=byte(sum%11)
str=string(arr)

请注意,Go 字符串是 UTF-8 编码的。一个符文可以表示为多个字节。通过像这样修改字符串,您可能会得到一个无效的字符串。


推荐阅读