У меня есть простое решение для небольшой проблемы, но как разработчик новичка, я всегда хочу узнать более правильные/лучшие способы сделать что-то. На данный момент я получаю строку, которая выглядит более или менее, как это ...Захват ссылочного номера подстроки переменной длины
Некоторые Случайный текст, Ссылка: Supp-1234 и некоторые более случайный текст ...
Теперь, если мы предполагаем, этот сценарий, и мы хотим получить только цифры часть опорного числа, мы можем сделать что-то вроде этого ...
int firstCharacter = mystring.IndexOf("Supp-", StringComparison.InvariantCultureIgnoreCase);
myIssueId = firstCharacter != -1 ? mailItem.Subject.Substring(firstCharacter + 5, 4) : "";
Но теперь предположим, что мы получаем ссылочный номер Supp-12345, теперь это обыкновение Работа. Вы можете попробовать что-то вроде этого ...
int firstCharacter = mystring.IndexOf("Supp-", StringComparison.InvariantCultureIgnoreCase);
if (firstCharacter != -1)
{
string temp = mystring.Substring(firstCharacter + 5, 5);
try
{
int x = Convert.ToInt32(temp); // to ensure it is indeed a number
}
catch (Exception)
{
temp = mystring.Substring(firstCharacter + 5, 4); // it is 4 digits, not 5
}
myIssueId = temp;
}
Теперь мой вопрос в этом. Как улучшить этот код? Это слишком грязно для меня. Любые идеи будут оценены.
Это похоже на работу для регулярных выражений: http://msdn.microsoft.com/en-us/library/hs600312.aspx. Здесь вы должны использовать что-то вроде 'Supp- (? \ d +)', тогда подстрока, представляющая только цифры, будет в группе захвата 'issue'. –
millimoose
Насколько я ненавижу это говорить, это тип проблемы. Регулярные выражения были созданы для решения. –
thats smart ... регулярные выражения ... Я помню, используя их в университете ... – KapteinMarshall