Golang:如何从字符串中替换第n个字符
问题描述:
我想从原始字符串中替换第n个字符,我可以通过使用字符[i]来访问字符串中的第n个字符,但是当我为字符赋值时[it]它给出错误。Golang:如何从字符串中替换第n个字符
package main
import "fmt"
func main() {
var chars = "abcdef"
fmt.Println(string(chars[3]))
chars[3] = "z" // is not working,
}
答
发生这种情况是因为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
或者在对方的回答证明,你可以使用reslicing。
答
字符串是不可变的。
chars = chars[:3] + "z" + chars[4:]
+0
谢谢你的答案,+1“字符串是不可变的” –
答
使用切片索引来删除索引处的字符,并在其中放置新字符。
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]))
}
输出:选择一切从指数(3 + 1),直到:
d
z
[:3]
从开始直到索引3,和[3 + 1]中选择的切片的一切切片的结尾。把你想要的角色放在两条语句之间,并把它们放在一起,以取代特定索引处字符的效果。
如果要替换特定字符(即字母'b'的所有(或部分)实例),可以使用strings.Replace函数。
谢谢你的解释和非常好的答案,这就是我正在寻找的。但我需要将我的字符串转换为字节数组? –
@PankajKhairnar是啊这里有另一个例子,这样做...... https://play.golang.org/p/M_Gb1_bVCs基本上,如果你是一个字符串's',你可以'myBytes:= [] byte(s)'' – evanmcdonnal
非常感谢你,现在有意义:) –