你需要似乎是如下的规则:一个“/”字符前面
- 文件夹名称=最后的字符串,但不包含“/”字符
- 内容名称=最后一个字符串不含有'/'字符,直到(但不包括)'_'或'。'性格
- FOLDERPATH =相同的文件夹名称,除了它可以包含“/”字符
假设上述规则 - 你可能想验证码:
string value = @"/webdav/MyPublication/Building%20Blocks/folder0/folder1/content_1.xml";
var foldernameMatch = Regex.Match(value, @"([^/]+)/[^/]+$");
var contentnameMatch = Regex.Match(value, @"([^/_\.]+)[_\.][^/]*$");
var folderpathMatch = Regex.Match(value, @"(.*/)[^/]*$");
if (foldernameMatch.Success && contentnameMatch.Success && folderpathMatch.Success)
{
var foldername = foldernameMatch.Groups[1].Value;
var contentname = contentnameMatch.Groups[1].Value;
var folderpath = folderpathMatch.Groups[1].Value;
}
else
{
// handle bad input
}
请注意,您还可以结合这些要成为一个大的正则表达式,虽然它可以是更麻烦跟随(如果没有的话):
var matches = Regex.Match(value, @"(.*/)([^/]+)/([^/_\.]+)[_\.][^/]*$");
if (matches.Success)
{
var foldername = matches.Groups[2].Value;
var contentname = matches.Groups[3].Value;
var folderpath = matches.Groups[1].Value + foldername + "/";
}
else
{
// handle bad input
}
你能描述一下你想在文字中使用的规则吗?一个例子可以用各种方式来解释。另外,你有什么尝试? – svick 2012-03-28 14:18:18
'Path'类可能会有所帮助。 – 2012-03-28 14:20:43