Ruby字符串具有一种称为squeeze
的方法。从Ruby文档:
"yellow moon".squeeze #=> "yelow mon"
" now is the".squeeze(" ") #=> " now is the"
"putters shoot balls".squeeze("m-z") #=> "puters shot balls"
在golang中,此操作是否有替代功能?如果不是,什么是最好的方法呢?
最佳答案
您可以这样做:
func Squeeze(s string) string {
result := make([]rune, 0)
var previous rune
for _, rune := range s {
if rune != previous {
result = append(result, rune)
}
previous = rune
}
return string(result)
}
请记住,字符串在Go中是UTF8,因此为了与非ASCII字符串兼容,必须使用 rune (字符)而不是字节。
关于ruby - ruby 压缩替代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41285456/