在特定斜杠后获取字符串

时间:2013-11-26 09:48:26

标签: c# stringbuilder

我有一个字符串,我想得到第三个斜线后的任何东西。 我不知道我能做到的任何其他方式,如果我不需要它,我真的不想使用正则表达式。

例如,

http://www.website.com/hello将是你好

我之前使用了str.LastIndexOf('/'),如:

          string str3 = str.Substring(str.LastIndexOf('/') + 1);

但是,我仍在尝试弄清楚如何为不是第一个或最后一个的斜杠执行此操作

3 个答案:

答案 0 :(得分:2)

根据C.Evenhuis的建议,您应该依赖本地System.Uri类:

string url = "http://stackoverflow.com/questions/20213490/getting-string-after-a-specific-slash"
Uri asUri = new Uri(url);
string result = asUri.LocalPath;
Console.WriteLine(result);

(住在http://csharpfiddle.com/LlLbriBm

这将输出:

  

/问题/ 20213490 /获取字符串-后一个特定的斜线

如果您不想在结果中使用第一个/,只需使用:

string url = "http://stackoverflow.com/questions/20213490/getting-string-after-a-specific-slash"
Uri asUri = new Uri(url);
string result = asUri.LocalPath.TrimStart('/');
Console.WriteLine(result);

你应该看看System.Uri class documentation。您可以使用大量属性,具体取决于您想要在网址中保留的内容(网址参数,主题标签等)

答案 1 :(得分:1)

    string s = "some/string/you/want/to/split";
    string.Join("/", s.Split('/').Skip(3).ToArray());

答案 2 :(得分:0)

如果您正在操纵网址,请使用Uri课程,而不是自己编辑。

但是如果你想出于教育原因而手动完成,你可以这样做:

int startPos = 0;
for(int i  = 0; i < 3; i++)
{
   startPos = s.IndexOf('/', startPos)+1;
}

var stringOfInterest = s.Substring(startPos);

如果字符串不是您期望的形式,有很多方法可能会失败,所以这只是一个让您入门的例子。

虽然这是不成熟的优化,但这种方法比将整个字符串粉碎成组件并将它们重新组合在一起更有效。