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

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

string test = "9586-202-10072"

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

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

Ответ 1

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

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

Коррекция

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

Ответ 2

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

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

Console.WriteLine(lastFragment);

Ответ 3

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

Ответ 4

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

Здесь следует упомянуть. Даже если это не точный ответ.

result = Path.GetFileName(имя_файла); см. https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx

Ответ 6

YourString.SubString(YourString.LastIndexOf("-"));

Ответ 7

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

Ответ 8

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

if (indexOfHyphen >= 0)
{
    string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
    Console.WriteLine(contentAfterLastHyphen );
}