Как извлечь определенные слова из предложения?
Я ищу лучший метод извлечения слов.
У меня есть предложение под названием TestTest-CustID : 1200005#14102016_0412-ARF или это может быть TestTest-CustID:1200005#14102016_0412 - ARF
Этот 'CustID : 1200005#' может быть с пробелами или без них. Мне нужно извлечь из этого "1200005".
string subject = "TestTest - CustID : 1200005#14102016_0412- ARF" if (subject.Trim().Contains(CustID:)) { customerId = ExtractFromString(mailSubject, "CustID:","#"); } else if (subject.Trim().Contains(CustID:)) { customerId = ExtractFromString(mailSubject, "CustID:","#"); } } <pre lang="C#">private static List<string> ExtractFromString(string text, string startString, string endString) { List<string> matched = new List<string>(); int indexStart = 0, indexEnd = 0; bool exit = false; while (!exit) { indexStart = text.IndexOf(startString); indexEnd = text.IndexOf(endString); if (indexStart != -1 && indexEnd != -1) { matched.Add(text.Substring(indexStart + startString.Length, indexEnd - indexStart - startString.Length)); text = text.Substring(indexEnd + endString.Length); } else exit = true; } return matched; }</pre>
Это работает, но я ищу какой-то лучший вариант, учитывая как CustID : 1200005# , так и CustID:1200005#
Что я уже пробовал:
То,что я пробовал, было приложено.
string subject = "TestTest - CustID : 1200005#14102016_0412- ARF" if (subject.Trim().Contains("CustID")) { customerId = ExtractFromString(mailSubject, "CustID:","#"); } else if (subject.Trim().Contains(CustID:)) { customerId = ExtractFromString(mailSubject, "CustID:","#"); } } <pre lang="C#">private static List<string> ExtractFromString(string text, string startString, string endString) { List<string> matched = new List<string>(); int indexStart = 0, indexEnd = 0; bool exit = false; while (!exit) { indexStart = text.IndexOf(startString); indexEnd = text.IndexOf(endString); if (indexStart != -1 && indexEnd != -1) { matched.Add(text.Substring(indexStart + startString.Length, indexEnd - indexStart - startString.Length)); text = text.Substring(indexEnd + endString.Length); } else exit = true; } return matched; }</pre>