为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Go 中的字符串中替换第 n 个字符

如何从 Go 中的字符串中替换第 n 个字符

Go
温温酱 2022-01-17 16:33:07
我想替换原始字符串中的第 n 个字符。我可以使用 访问字符串中的第 n 个字符chars[i],但是当我为 赋值时chars[i],我得到一个错误。package mainimport "fmt"func main() {  var chars = "abcdef"  fmt.Println(string(chars[3]))  chars[3] = "z" // is not working}
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

字符串是不可变的。

chars = chars[:3] + "z" + chars[4:]


查看完整回答
反对 回复 2022-01-17
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

发生这种情况是因为chars它实际上是一个字符串并且是不可变的。如果您适当地声明它(作为字节切片),那么您可以在尝试时分配给它。这是一个例子;


package main

import "fmt"


func main() {

  var chars = []byte{'a', 'b', 'c', 'd', 'e', 'f'}

  fmt.Println(string(chars[3]))

  fmt.Printf("%T\n", chars)

  chars[3] = 'z'

  fmt.Println(string(chars))

}

https://play.golang.org/p/N1sSsfIBQY


或者,您可以使用重新切片,如另一个答案中所示。


查看完整回答
反对 回复 2022-01-17
?
森林海

TA贡献2011条经验 获得超2个赞

使用切片索引删除索引处的字符,并在那里放置一个新字符。


package main

import "fmt"


func main() {

  var chars = "abcdef"

  fmt.Println(string(chars[3]))

  chars = chars[:3] + "z" + chars[3+1:]

  fmt.Println(string(chars[3]))

}

输出:


d

z

[:3]选择切片中从开始到索引 3 的所有内容,并且 [3+1:] 选择从索引 (3+1) 到切片结尾的所有内容。将您想要的字符放在两个语句之间并将它们全部放在一起,以获得在特定索引处替换字符的效果。


如果要替换特定字符(即字母“b”的所有(或部分)实例),可以使用strings.Replace函数


查看完整回答
反对 回复 2022-01-17
  • 3 回答
  • 0 关注
  • 461 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号