英文:
Replace the last character in a string
问题
s = s[:len(s)-1] + "c"
我遇到了解决这个问题的需求,惊讶地发现没有直接的s[index] = "c"
的方法(我猜这意味着字符串是不可变的?)。
上述的方法是替换字符串中最后一个字符的最佳方式吗?
英文:
s=s[:len(s)-1] + "c"
I came across the need to solve this problem, and I was surprised to find out there is no direct s[index] = "c"
way (I guess this means strings are immutable?).
Is the above the best way to replace just the last character in a string?
答案1
得分: 3
请稍等,我会为您翻译代码部分。
package main
import (
"fmt"
"unicode/utf8"
)
func replaceLastRune(s string, new rune) string {
old, size := utf8.DecodeLastRuneInString(s)
if old == utf8.RuneError && size <= 1 {
return s
}
return s[:len(s)-size] + string(new)
}
func main() {
s := "Hello WorlΔ"
fmt.Println(s)
s = replaceLastRune(s, 'd')
fmt.Println(s)
}
请注意,这是一个用于处理UTF-8编码字符串的函数。它的作用是将字符串中的最后一个符文替换为指定的新符文。在main
函数中,我们使用该函数将字符串s
中的最后一个符文替换为字母'd',然后打印结果。
您可以在以下链接中查看代码的运行结果:https://go.dev/play/p/2LsSSS-5Y2l
英文:
Write a function that works for UTF-8 encoded strings.
package main
import (
"fmt"
"unicode/utf8"
)
func replaceLastRune(s string, new rune) string {
old, size := utf8.DecodeLastRuneInString(s)
if old == utf8.RuneError && size <= 1 {
return s
}
return s[:len(s)-size] + string(new)
}
func main() {
s := "Hello WorlΔ"
fmt.Println(s)
s = replaceLastRune(s, 'd')
fmt.Println(s)
}
https://go.dev/play/p/2LsSSS-5Y2l
Hello WorlΔ
Hello World
答案2
得分: -4
使用正则表达式:
regexp.MustCompile(".$").ReplaceAllString(s, "c")
查看实时演示
s := "reli大"
s = regexp.MustCompile(".$").ReplaceAllString(s, "c")
println(s) // 输出 "relic"
英文:
Use regex:
regexp.MustCompile(".$").ReplaceAllString(s, "c")
See live demo
s := "reli大"
s = regexp.MustCompile(".$").ReplaceAllString(s, "c")
println(s) // prints "relic"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论