Подтвердить что ты не робот

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

С учетом этой строки:

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

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

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

Спасибо, Пол

4b9b3361

Ответ 1

один вкладыш с Linq:

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

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

var lastPart = text.Split('/').Where(x => !string.IsNullOrWhiteSpace(x)).LastOrDefault();

Ответ 2

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

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

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

Ответ 3

Вы можете использовать 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();

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

Небольшой совет для любых глупых или ненаблюдаемых людей (или тех, кто недавно отказался от кофе и глупый, ненаблюдательный, грубый... как и я). Пути файлов Windows используют '\'... все примеры здесь, с другой стороны, используйте '/'.

Поэтому используйте '\\', чтобы получить конец пути к файлу Windows!:)

Решения здесь идеальны и полны, но, возможно, это может помешать какой-либо другой бедной душе тратить час, как я только что сделал!

Ответ 8

Принятый ответ может дать непредвиденные результаты (пустая строка), если URL-адрес оканчивается на /

Чтобы предотвратить это, вы можете использовать:

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

Ответ 9

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

Ответ 10

Path.GetFileName

рассматривает/и\как разделители.

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

Ответ 11

Для строки:

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