我在C#中有3种类型的字符串,我想使用正则表达式在斜杠之间检索文本
string type1 = "www.domain.com/category-name/1.html";
string type2 = "www.domain.com/category-name/sub-category-name/2.html";
string type3 = "www.domain.com/category-name/sub-category-name/sub-sub-category-name/3.html";
Q1)从type1变量我想在第一个和第二个斜杠'/'之间检索文本。我应该 category-name 。
Q2)从type2变量我想在第一个和第二个斜杠'/'之间检索文本,在第二个和第三个斜杠'/'之间检索文本。我应该类别名称和子类别名称
Q3)从type3变量我希望在第一个和第二个斜杠'/'之间检索文本,在第二个和第三个斜杠'/'之间检索文本,在第三个和第四个斜杠'/'之间检索文本。我应该 category-name 和 sub-category-name 和 sub-sub-category-name
任何帮助将不胜感激
由于
答案 0 :(得分:6)
您无需正则表达式即可使用,请查看String.Split
方法和StringSplitOptions
枚举。
string type1 = "www.domain.com/category-name/1.html";
string[] splicedUrl = type1.Split('/', StringSplitOptions.None);
if (splicedUrl.length > 0)
{
// Access the correct index, check how many entries the array has etc.
}
您可能需要查看following post。
答案 1 :(得分:2)
假设theString
是您要解析的变量:
var tokens = theString.split('/');
if(tokens.length >= 2)
{
string category = tokens[1];
List<string> subCategories = new List<string>();
for(int k = 2; k < tokens.length - 1; k++)
{
subCategories.Add(tokens[k]);
}
}
答案 2 :(得分:2)
您还可以使用System.Uri执行以下操作:
Uri type1 = new Uri("http://www.domain.com/category-name/1.html");
var categoryNameType1 = type1.Segments[1];
Uri type2 = new Uri("http://www.domain.com/category-name/sub-category-name/2.html");
var categoryNameType2 = type2.Segments[1];
var subcategoryNameType2 = type2.Segments[2];
这可能比简单的string.Split()稍微复杂一些,但是如果你需要从像查询这样的URI中获取更多信息,你就可以轻松获得它。
答案 3 :(得分:1)
如果你真的觉得在这种情况下需要(误)使用正则表达式
/([\w-]+)(?=/)
应该做的伎俩。这假设斜杠之间的项是字母和连字符。
答案 4 :(得分:1)
这是另一种方法。这相当于你已经拥有的其他答案,但只是想发布它,因为它略有不同:
string url = "www.domain.com/category-name/1.html"
var splitted = url.Split('/');
var values = splitted.Skip(1).Take(splitted.Length - 2).ToArray();