Golang:如何从字符串

时间:2016-06-07 20:13:15

标签: string go replace

我想在原始字符串中替换第n个字符,我可以使用字符[i]从字符串中访问第n个字符,但是当我为chars [i]赋值时,它会给出错误。

package main
import "fmt"

func main() {
  var chars = "abcdef"
  fmt.Println(string(chars[3]))
  chars[3] = "z" // is not working, 
}

3 个答案:

答案 0 :(得分:10)

字符串是不可变的。

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

答案 1 :(得分:8)

这种情况正在发生,因为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

或者,您可以使用其他答案中所示的重新发送。

答案 2 :(得分: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]))
}

输出:

d
z

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

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