Имею следующее:
string test = "9586-202-10072"
Как бы мне поставить всех персонажей справа от финала - так что 10072. Количество символов всегда отличается справа от последнего тире.
Как это может быть сделано?
Имею следующее:
string test = "9586-202-10072"
Как бы мне поставить всех персонажей справа от финала - так что 10072. Количество символов всегда отличается справа от последнего тире.
Как это может быть сделано?
Ответы:
Вы можете получить позицию последнего -с помощью str.LastIndexOf('-'). Итак, следующий шаг очевиден:
var result = str.Substring(str.LastIndexOf('-') + 1);
Исправление :
Как говорит Брайан ниже, использование этого параметра в строке без тире приведет к возврату той же строки.
LastIndexOfвозвращает -1, если ничего не найдено (это задокументированное поведение, поэтому на него можно положиться). str.Substring(1-1)дает вам строку, равную str. Здесь никаких сюрпризов.
Вы можете использовать LINQ и избавиться от явного синтаксического анализа:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Я вижу, что этот пост просмотрели более 46 000 раз. Я готов поспорить, что многие из 46 000 зрителей задают этот вопрос просто потому, что им просто нужно имя файла ... и эти ответы могут быть кроличьей ноской, если вы не можете сделать свою подстроку дословно, используя знак at.
Если вы просто хотите получить имя файла, то здесь следует указать простой ответ. Даже если это не точный ответ на вопрос.
result = Path.GetFileName(fileName);
см. https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
См. Метод String.lastIndexOf
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
Я создал для этого расширение строки, надеюсь, это поможет.
public static string GetStringAfterChar(this string value, char substring)
{
if (!string.IsNullOrWhiteSpace(value))
{
var index = value.LastIndexOf(substring);
return index > 0 ? value.Substring(index + 1) : value;
}
return string.Empty;
}
strравно нулю или вообще не содержит дефиса. (В случае, если дефиса нет, он не бросает; он возвращает всю исходную строку.)