我想從原始字符串中替換第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,
}
我想從原始字符串中替換第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:]
謝謝你的答案,+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
非常感謝你,現在有意義:) –