你需要似乎是如下的規則:一個「/」字符前面
- 文件夾名稱=最後的字符串,但不包含「/」字符
- 內容名稱=最後一個字符串不含有'/'字符,直到(但不包括)'_'或'。'性格
- 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