我想删除一个字符串的最后一个字符,但在此之前我想检查最后一个字符是否是“+"。这该怎么做呢?
x4shl7ld1#
以下是几种删除尾随加号的方法。
package main import ( "fmt" "strings" ) func TrimSuffix(s, suffix string) string { if strings.HasSuffix(s, suffix) { s = s[:len(s)-len(suffix)] } return s } func main() { s := "a string ++" fmt.Println("s: ", s) // Trim one trailing '+'. s1 := s if last := len(s1) - 1; last >= 0 && s1[last] == '+' { s1 = s1[:last] } fmt.Println("s1:", s1) // Trim all trailing '+'. s2 := s s2 = strings.TrimRight(s2, "+") fmt.Println("s2:", s2) // Trim suffix "+". s3 := s s3 = TrimSuffix(s3, "+") fmt.Println("s3:", s3) }
输出:
s: a string ++ s1: a string + s2: a string s3: a string +
ttygqcqt2#
根据@KarthikGR的评论,添加了以下示例:https://play.golang.org/p/ekDeT02ZXoq
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.TrimSuffix("Foo++", "+")) }
退货:
Foo+
kxe2p93d3#
没有内置的方法,但手工操作很简单。
s := "mystring+" sz := len(s) if sz > 0 && s[sz-1] == '+' { s = s[:sz-1] }
hsvhsicv4#
package main import ( "fmt" ) func main() { s := "venga|ese|sabor|" newString := "" if len(s) > 0 { newString = s[:len(s)-1] } fmt.Println(newString) }
输出:文加|埃斯|破坏者去Playground:https://go.dev/play/p/o9ExIEuU0SF
tnkciper5#
@拉扎罗一个简单的UTF兼容字符串修剪器是
string([]rune(foo)[:len(foo)-1]))
所以我觉得
f2 := []rune(foo) for f2[len(f2)-1] == '+'{ f2 = f2[:len(f2)-1] } foo = string(f2)
https://go.dev/play/p/anOwXlfQWaF我不知道为什么其他的答案会像他们那样裁剪,因为他们在裁剪字节。
5条答案
按热度按时间x4shl7ld1#
以下是几种删除尾随加号的方法。
输出:
ttygqcqt2#
根据@KarthikGR的评论,添加了以下示例:
https://play.golang.org/p/ekDeT02ZXoq
退货:
kxe2p93d3#
没有内置的方法,但手工操作很简单。
hsvhsicv4#
输出:文加|埃斯|破坏者
去Playground:
https://go.dev/play/p/o9ExIEuU0SF
tnkciper5#
@拉扎罗
一个简单的UTF兼容字符串修剪器是
所以我觉得
https://go.dev/play/p/anOwXlfQWaF
我不知道为什么其他的答案会像他们那样裁剪,因为他们在裁剪字节。