2010-07-15 5 views
23

У меня есть гигантский текстовый файл, содержащий кучу строк, разделенных на \. Проблема для меня может быть 5 \ или 4 \ или 3 \.Разделительная строка последним разделителем

Что мне нужно, чтобы вытащить последние \ независимо от того, сколько их из них. Любая помощь приветствуется.

Примеры:

 
I\need\this 
I\want\line\this 
Hello\give\me\all\this 

мне нужно слово this, например, но очевидно, что это не просто слово this.

+0

Учитывая строку без «\», если функция возвращает всю строку или пустую строку ? например Передайте его «Привет», если он вернет «Привет» или «»? –

ответ

53
string last = inputString.Substring(inputString.LastIndexOf('\\') + 1); 
+0

+1: С предостережение, которое вы проверяете на пустую строку сначала 'if (! string.IsNullOrEmpty (inputString)), и что, если в строке нет« \ », вам нужна целая строка :) –

+11

Проверка правильности, должен всегда проверять это. Хорошая вещь о LastIndexOf (..) + 1 заключается в том, что LastIndexOf (..) вернет -1 для символа, который не может быть найден, поэтому итоговым результатом является Подстрока, взятая из позиции 0, которая является началом строки, поэтому возвращается вся строка. –

+1

Согласовано, во всех точках, но требование вполне может состоять в том, что если «\» не будет возвращена пустая строка. Я просто говорю, что нужно проверить, какое поведение требуется. –

18
string myString = inputString.Split('\\').Last(); 
+5

.NET Правило 34 - Если оно существует, для него есть LINQ. :-) –

+1

Возможно, должно быть 'LastOrDefault()' для дополнительной безопасности –

+1

Действительно? Я бы подумал о худшем сценарии (inputstring == string.Empty), 'inputString.Split ('\\')' все равно вернет массив из одной строки, что, конечно, == string.Empty – Flynn1179

6

Почти забыл этот (хотя это немного нахально):

string result = Path.GetFilename(input);

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – lxg

+1

Он был помечен из-за низкого качества. И действительно, он работает только в Windows. (Я понимаю, что вопрос касается C#, который обычно используется в средах Windows, но его можно портировать на другие платформы через Mono.) – lxg

+3

Я согласен с тем, что факт, что он работает только на окнах, вероятно, имеет значение, но это не так действительно оправданным аргументом в пользу утверждения низкого качества. В некоторых случаях ответы MOST не будут работать. Фактически, ОП не объяснил, ПОЧЕМУ он хочет это сделать, вполне возможно, что извлечение имени файла было именно тем, что он хотел сделать, конечно, он может быть идеальным для другого читателя, который ищет ответ по этой причине. – Flynn1179

Смежные вопросы