如何替换Go中的第n次出现
如何替换func函数(s,旧的,新的[]字节,n int)[]字节,给定三个 字节片s、old、new和整数n返回与s对应的片,其中 第n次出现的旧的替换为新的。如果不存在这种情况, 函数返回s而不更改它?谢谢如何替换Go中的第n次出现,go,replace,slice,Go,Replace,Slice,如何替换func函数(s,旧的,新的[]字节,n int)[]字节,给定三个 字节片s、old、new和整数n返回与s对应的片,其中 第n次出现的旧的替换为新的。如果不存在这种情况, 函数返回s而不更改它?谢谢 import ( "fmt" "os" "strconv" ) func main() { s := os.Args[1] old := os.Args[2] new := os.Args[3] n, _ := strconv
import (
"fmt"
"os"
"strconv"
)
func main() {
s := os.Args[1]
old := os.Args[2]
new := os.Args[3]
n, _ := strconv.Atoi(os.Args[4])
fmt.Println(s)
replaced := replace([]byte(s), []byte(old), []byte(new), n)
fmt.Println(string(replaced))
}
func replace(s, old, new []byte, i int) (replaced []byte) {
}```
您可以尝试使用组合
bytes.SplitAfter
,该组合将在片段的N元素上使用分隔符(bytes.Replace()
)分割原始字符串,然后使用组合bytes.Join
重新组合原始字符串
您应该检查以下内容,其中非常清楚:)
主程序包
进口(
“字节”
“fmt”
)
func main(){
str:=[]字节(“oink-oink-oink”)
旧的:=[]字节(“k”)
新:=[]字节(“X”)
splitedStr:=字节。SplitAfter(str,旧)
splitedStr[2]=字节。替换(splitedStr[2],旧,新,-1)
fmt.Printf(“%s”,bytes.Join(splitedStr,[]字节(“”))
}
Hint:搜索第n个匹配项,并在那里对输入进行切片。连接前缀、新字符串和后缀。