go - 如何修改字符串中的特定字符
问题描述
在 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。为什么是错的?我应该如何转换?
解决方案
与 C 不同,Go 字符串是不可变的,因此您不能修改字符串中的单个字节。但是,您可以将字符串转换为字节数组,对其进行更改,然后将该字节数组转换为字符串。
arr:=[]byte(str)
arr[strlen-1]=byte(sum%11)
str=string(arr)
请注意,Go 字符串是 UTF-8 编码的。一个符文可以表示为多个字节。通过像这样修改字符串,您可能会得到一个无效的字符串。
推荐阅读
- nancy - Krestrel 上的 NancyFX - 响应流已关闭
- python - 如何根据另一列值获取列的平均值
- python-3.x - 在我的应用程序中使用 DataTable
- javascript - 定位反应元素
- angular - Angular 6 更新后 @markpieszak/ng-application-insights 的问题
- javascript - 在本地 HTA 文件中单击超链接时如何获取超链接的相对路径
- sql - SQL Server 中唯一行的窗口函数
- java - 成功构建后我的应用程序崩溃
- sql - 在打印的 div 中包含来自 sql 数据库的换行符
- r - 混合 GLMM 模型 - 使用权重的问题(使用 R 包'lme4'