如何替换 golang 中字符串的第 n 个(在本例中为第二个)出现?下面的代码替换示例串optimismo from optimism用o from optimism时,我希望它是optimismo from
package main
import (
"fmt"
"strings"
)
func main() {
mystring := "optimismo from optimism"
excludingSecond := strings.Replace(mystring, "optimism", "", 1)
fmt.Println(excludingSecond)
}
Run Code Online (Sandbox Code Playgroud)
小智 7
对于任何在这篇文章中绊倒并希望替换最后一次出现的人
package main
import (
"fmt"
"strings"
)
func main() {
mystring := "optimismo from optimism"
i := strings.LastIndex(mystring, "optimism")
excludingLast := mystring[:i] + strings.Replace(mystring[i:], "optimism", "", 1)
fmt.Println(excludingLast)
}
Run Code Online (Sandbox Code Playgroud)
例如,
package main
import (
"fmt"
"strings"
)
// Replace the nth occurrence of old in s by new.
func replaceNth(s, old, new string, n int) string {
i := 0
for m := 1; m <= n; m++ {
x := strings.Index(s[i:], old)
if x < 0 {
break
}
i += x
if m == n {
return s[:i] + new + s[i+len(old):]
}
i += len(old)
}
return s
}
func main() {
s := "optimismo from optimism"
fmt.Printf("%q\n", s)
t := replaceNth(s, "optimism", "", 2)
fmt.Printf("%q\n", t)
}
Run Code Online (Sandbox Code Playgroud)
输出:
"optimismo from optimism"
"optimismo from "
Run Code Online (Sandbox Code Playgroud)