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

我想替换原始字符串中的第 n 个字符。我可以使用 访问字符串中的第 n 个字符chars[i],但是当我为 赋值时chars[i],我得到一个错误。


package main

import "fmt"


func main() {

  var chars = "abcdef"

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

  chars[3] = "z" // is not working

}


温温酱
浏览 462回答 3
3回答

慕标琳琳

字符串是不可变的。chars = chars[:3] + "z" + chars[4:]

芜湖不芜

发生这种情况是因为chars它实际上是一个字符串并且是不可变的。如果您适当地声明它(作为字节切片),那么您可以在尝试时分配给它。这是一个例子;package mainimport "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或者,您可以使用重新切片,如另一个答案中所示。

森林海

使用切片索引删除索引处的字符,并在那里放置一个新字符。package mainimport "fmt"func main() {  var chars = "abcdef"  fmt.Println(string(chars[3]))  chars = chars[:3] + "z" + chars[3+1:]  fmt.Println(string(chars[3]))}输出:dz[:3]选择切片中从开始到索引 3 的所有内容,并且 [3+1:] 选择从索引 (3+1) 到切片结尾的所有内容。将您想要的字符放在两个语句之间并将它们全部放在一起,以获得在特定索引处替换字符的效果。如果要替换特定字符(即字母“b”的所有(或部分)实例),可以使用strings.Replace函数
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go