我正在与一个字符串分裂战斗。我想通过 wildcard 将字符串拆分成一个切片,但是这个切片也应该包含这个通配符。
例如:[/applications/ {name} /tokens/ {name}]
应该分为splitPath
等。
这是我编写的示例代码,但它无法正常工作,我也不会感觉良好。
https://play.golang.org/p/VMOsJeaI4l
有一些示例路线需要测试。方法\
将路径拆分为部分并显示:之前和之后。
答案 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"]
这不包括'/'字符,因为您已经知道返回中的所有字符串,但最后一个字符串是目录,最后一个字符串是文件名。由于有效性检查,您可以假设这一点。