получить все символы справа от последнего тире



у меня есть следующие:



string test = "9586-202-10072"


Как бы я получил все символы справа от финала - так 10072. Количество символов всегда отличается справа от последнего тире.



Как это можно сделать?

369   8  
c#

8 ответов:

вы можете получить позицию последнего - С str.LastIndexOf('-'). Так что следующий шаг очевиден:

var result = str.Substring(str.LastIndexOf('-') + 1);

коррекция:

как Брайан заявляет ниже, использование этого в строке без тире приведет к возвращению той же строки.

вы можете использовать LINQ, и сохранить себе явный разбор:

string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();

Console.WriteLine(lastFragment);
string tail = test.Substring(test.LastIndexOf('-') + 1);

Я вижу этот пост был просмотрен более 46 000 раз. Я бы поспорил, что многие из 46 000 зрителей задают этот вопрос просто потому, что они просто хотят имя файла... и эти ответы могут быть кроличьей норой, если вы не можете сделать свою подстроку дословно, используя знак at.

Если вы просто хотите получить имя файла, то есть простой ответ, который следует упомянуть здесь. Даже если это не точный ответ на вопрос.

result = Path.GetFileName(fileName);

посмотреть https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs. 110).aspx

посмотреть строку.lastIndexOf метод

test.Substring(test.LastIndexOf("-"))

string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");

if (indexOfHyphen >= 0)
{
    string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
    Console.WriteLine(contentAfterLastHyphen );
}
YourString.SubString(YourString.LastIndexOf("-"));

Comments

    Ничего не найдено.