У меня есть следующее:
string test = "9586-202-10072"
Как бы я получил все символы справа от окончательного -
, поэтому 10072. Количество символов всегда отличается справа от последней тире.
Как это можно сделать?
У меня есть следующее:
string test = "9586-202-10072"
Как бы я получил все символы справа от окончательного -
, поэтому 10072. Количество символов всегда отличается справа от последней тире.
Как это можно сделать?
Вы можете получить позицию последнего -
с помощью 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);
Я вижу, что этот пост просматривался более 46000 раз. Я бы поспорил, что многие из 46 000 задают этот вопрос просто потому, что им просто нужно имя файла... и эти ответы могут быть кроличьей дырой, если вы не можете сделать свою подстроку дословно с помощью знака at. Это приводит к появлению кроликов, когда, если реальный вопрос, как получить имя файла, является простым ответом.
Здесь следует упомянуть. Даже если это не точный ответ.
result = Path.GetFileName(имя_файла); см. https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
См. String.lastIndexOf метод
YourString.SubString(YourString.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 );
}