我需要提取网址“ URL”后的其余部分
例如URL可以是
https://www.example.com/site/country/home/products
https://www.example.com/site/country/home/products/consumer
https://www.example.com/site/country/home/products/consumer/kids
网址“国家/地区”中的关键字可能会更改。
我在输出中需要的是:
/products
/products/consumer
/products/consumer/kids
我尝试过使用Regex,但在上述情况下无法正常工作
答案 0 :(得分:1)
如Corion和David在评论中所建议的,在这种情况下,最简单的方法可能就是找到/home/
的索引,然后将所有内容剥离到该点(而不是第二个/
):
string home = "/home/";
int homeIndex = url.IndexOf(home);
string relativeUrl = url.Substring(homeIndex + home.Length - 1);
使用正则表达式,您要匹配/home/
子字符串,并捕获第二个/
及其后面的所有内容:
Match match = Regex.Match(url, @"/home(/.*)");
string relativeUrl = "/";
if (match.Success) {
relativeUrl = match.Groups[1].Value;
}
答案 1 :(得分:0)
使用正则表达式很容易。请使用以下正则表达式并测试您的方案。很好。
正则表达式:'(?<=\/home).*\b'
回家前无需担心前部。到家后,便会一言不发。
答案 2 :(得分:0)
它是如此简单的C#代码,我认为它可能对您有帮助
string sub = "https://www.example.com/site/country/home/products";
string temp = "";
string[] ss = sub.Split('/');
for(int i = 0; i < sub.Length; i++)
{
if (ss[i] == "home")
{
i++;
for (int j = i; j < ss.Length; j++)
temp +='/'+ ss[j];
break;
}
}
Console.WriteLine(temp);
答案 3 :(得分:0)
您可以使用System.Uri
类提取URL的段:
Uri link = new Uri("https://www.example.com/site/country/home/products/consumer/kids");
string[] segs = link.Segments;
int idxOfHome = Array.IndexOf(segs, "home/");
string restOfUrl = string.Join("", segs, idxOfHome+1, segs.Length - (idxOfHome + 1));
产量:
产品/消费者/孩子