我怎么能有效地将字符串拆分成部分

时间:2017-04-24 23:53:57

标签: string go split

我正在与一个字符串分裂战斗。我想通过 wildcard 将字符串拆分成一个切片,但是这个切片也应该包含这个通配符。

例如:[/applications/ {name} /tokens/ {name}]应该分为splitPath等。

这是我编写的示例代码,但它无法正常工作,我也不会感觉良好。

https://play.golang.org/p/VMOsJeaI4l

有一些示例路线需要测试。方法\将路径拆分为部分并显示:之前和之后。

1 个答案:

答案 0 :(得分:0)

这是一个解决方案:

var validPathRe = regexp.MustCompile("^(/{[[:alpha:]]+}|/[-_.[:alnum:]]+)+$")
var splitPathRe = regexp.MustCompile("({[[:alpha:]]+}|[-_.[:alnum:]]+)")

func splitPath(path string) parts{
    var retPaths parts

    if !validPathRe.MatchString(path) {
        return retPaths
    }

    retPaths = splitPathRe.FindAllString(path, -1)

    return retPaths
}

我通过创建两个正则表达式来创建它,一个用于检查路径是否有效,另一个用于提取路径的各个部分并返回它们。如果路径无效,则返回空列表。返回将如下所示:

splitPath("/path/{to}/your/file.txt")
["path" "{to}" "your" "file.txt"]

这不包括'/'字符,因为您已经知道返回中的所有字符串,但最后一个字符串是目录,最后一个字符串是文件名。由于有效性检查,您可以假设这一点。