如何获取字符串的最后一部分?

时间:2010-08-02 11:23:21

标签: c# regex

鉴于此字符串:

http://s.opencalais.com/1/pred/BusinessRelationType

我想得到它的最后一部分:“BusinessRelationType”

我一直在考虑倒转整个字符串,然后寻找第一个“/”,把所有内容都放在左边,然后反过来。但是,我希望有更好/更简洁的方法。想法?

谢谢,保罗

11 个答案:

答案 0 :(得分:111)

与Linq的单行:

string lastPart = text.Split('/').Last();

答案 1 :(得分:57)

每当我发现自己编写代码LastIndexOf("/")时,我就会觉得我可能正在做一些不安全的事情,并且可能有更好的方法。

在使用URI时,我建议使用System.Uri类。这为您提供了验证并安全,轻松地访问URI的任何部分。

Uri uri = new Uri("http://s.opencalais.com/1/pred/BusinessRelationType");
string lastSegment = uri.Segments.Last();

答案 2 :(得分:38)

您可以使用String.LastIndexOf

int position = s.LastIndexOf('/');
if (position > -1)
    s = s.Substring(position + 1);

另一个选择是使用Uri,如果这是你需要的。这有利于解析uri的其他部分,并处理好查询字符串,例如:BusinessRelationType?q=hello world

Uri uri = new Uri(s);
string leaf = uri.Segments.Last();

答案 3 :(得分:15)

您可以使用string.LastIndexOf查找最后一个/ Substring以获取其后的所有内容:

int index = text.LastIndexOf('/');
string rhs = text.Substring(index + 1);

请注意,如果找不到值,LastIndexOf将返回-1,如果文本中没有/,则第二行将返回整个字符串。

答案 4 :(得分:9)

这是一个非常简洁的方法:

str.Substring(str.LastIndexOf("/")+1);

答案 5 :(得分:3)

if (!string.IsNullOrEmpty(url))
    return url.Substring(url.LastIndexOf('/') + 1);
return null;

答案 6 :(得分:2)

对于任何愚蠢或不虔诚的人(或任何最近放弃咖啡并且愚蠢,不注意,不高兴......像我一样的人)的小提示 - Windows文件路径使用'\' ...所有另一方面,这里的示例使用'/'

所以使用'\\'来结束Windows文件路径! :)

这里的解决方案是完美和完整的,但也许这可能会阻止其他一些可怜的灵魂像我刚才那样浪费一个小时!

答案 7 :(得分:2)

如果网址以/

结尾,则接受的答案可能会给出未经考虑的结果(空字符串)

为防止这种情况,您可以使用:

string lastPart = text.TrimEnd('/').Split('/').Last();

答案 8 :(得分:1)

或者,您可以使用正则表达式/([^/]*?)$来查找匹配

答案 9 :(得分:1)

Path.GetFileName

将/和\视为分隔符。

Path.GetFileName ("http://s.opencalais.com/1/pred/BusinessRelationType") =
"BusinessRelationType"

答案 10 :(得分:0)

对于字符串:

var stringUrl = "http://s.opencalais.com/1/pred/BusinessRelationType";
var lastPartOfUrl = stringUrl.Substring(stringUrl.LastIndexOf("/") + 1);

如果您将字符串转换为Uri: //完全取决于您的要求。

var stringUrl = "http://s.opencalais.com/1/pred/BusinessRelationType";
var convertStringToUri = new Uri(stringUrl);
var lastPartOfUrl = convertStringToUri.PathAndQuery.Substring(convertStringToUri.AbsolutePath.LastIndexOf("/") + 1);

输出:

BusinessRelationType