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/

10-09 15:18