#c#
#c#
Вопрос:
Мне нужно извлечь номер билета из строки. Пример строки:
string body = "Hello, world welcome. [TKNM-1234] Blah blah [HelpCode-5] Blah blah";
Мне нужно извлечь ТОЛЬКО 1234
из этой строки. Каков наилучший способ сделать это. Ранее я уже пробовал это:
int from = body.IndexOf("[TKNM-") "[TKNM-".Length;
int to = body.LastIndexOf("]");
ticketNumber = body.Substring(from, to - from);
Но у этого были проблемы из-за других скобок после TKNM. Все находится на C #.
Комментарии:
1. Это не ASP.Net этот тег должен исчезнуть.
Ответ №1:
Попробуйте регулярное выражение: (?<=TKNM-)d
Используйте регулярное выражение.Совпадение
Комментарии:
1. Я бы сказал
(?<=[TKNM-)d
— почти то же самое
Ответ №2:
Вот решение Linq, оно также обнаружит несколько вхождений, если вы не хотите, чтобы оно отбрасывало остальные и принимало первое, или может сделать его универсальной функцией, если префиксы билетов являются динамическими, и добавить их в качестве входных данных в функцию:
var body = "Hello, world welcome. [TKNM-1234] Blah blah [HelpCode-5] Blah blah";
var ticketnumbers = body.Split()
.Where(x => x.StartsWith("[TKNM") amp;amp; x.EndsWith("]"))
.Select(x=>x.Replace("[", string.Empty).Replace("]", string.Empty).Split('-')[1]).ToList();
Console.WriteLine(string.Join(", ", ticketnumbers));