Как получить последнюю часть строки?

Учитывая эту строку:

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

Я хочу получить последнюю часть его: "BusinessRelationType"

Я думал об инвертировании целой строки, затем ища первое "/", возьмите все слева от этого и реверса это. Однако я надеюсь, что существует лучше/больше краткий метод. Мысли?

Спасибо, Paul

52
задан AakashM 2 August 2010 в 00:27
поделиться

7 ответов

one-liner с Linq:

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

или если у вас там могут быть пустые строки (плюс опция null):

var lastPart = text.Split('/').Where(x => !string.IsNullOrWhiteSpace(x)).LastOrDefault();
114
ответ дан 7 November 2019 в 08:56
поделиться

Вы можете использовать string.LastIndexOf , чтобы найти последний /, а затем Substring , чтобы получить все после него:

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

Обратите внимание, что поскольку LastIndexOf возвращает -1, если значение не найдено, вторая строка вернет всю строку, если в тексте нет /.

16
ответ дан 7 November 2019 в 08:56
поделиться

В качестве альтернативы вы можете использовать регулярное выражение / ([^ /] *?) $ , чтобы найти совпадение

1
ответ дан 7 November 2019 в 08:56
поделиться
if (!string.IsNullOrEmpty(url))
    return url.Substring(url.LastIndexOf('/') + 1);
return null;
3
ответ дан 7 November 2019 в 08:56
поделиться

Вы можете используйте 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();
38
ответ дан 7 November 2019 в 08:56
поделиться

Вот довольно краткий способ сделать это:

str.Substring(str.LastIndexOf("/")+1);
9
ответ дан 7 November 2019 в 08:56
поделиться

Каждый раз, когда я пишу такой код, как LastIndexOf ("/") , у меня возникает ощущение, что я, вероятно, делаю что-то небезопасное, и, вероятно, уже существует лучший метод.

Поскольку вы работаете с URI, я бы рекомендовал использовать класс System.Uri . Это обеспечивает проверку и безопасный и легкий доступ к любой части URI.

Uri uri = new Uri("http://s.opencalais.com/1/pred/BusinessRelationType");
string lastSegment = uri.Segments.Last();
64
ответ дан 7 November 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: