У мене є таке:
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 глядачів задають це питання просто тому, що вони просто хочуть назву файлу ... і ці відповіді можуть бути кролячим отвором, якщо ви не можете зробити свою підрядку дослівно, використовуючи знак.
Якщо ви просто хочете отримати ім'я файлу, то тут є проста відповідь, яку слід згадати тут. Навіть якщо це не точна відповідь на питання.
result = Path.GetFileName(fileName);
див. https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
Дивіться метод String.lastIndexOf
Я створив розширення для цього рядка, сподіваюся, це допоможе.
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немає, або якщо він зовсім не містить дефіс. (У випадку, коли дефіса немає, він не кидає; він повертає весь рядок джерела.)