Вставьте этот код в тест:
public int? ParseAnInt(string s)
{
var match = System.Text.RegularExpressions.Regex.Match(s, @"\d+");
if (match.Success)
{
int result;
//still use TryParse to handle integer overflow
if (int.TryParse(match.Value, out result))
return result;
}
return null;
}
[TestMethod]
public void TestThis()
{
Assert.AreEqual(15, ParseAnInt("15 person"));
Assert.AreEqual(15, ParseAnInt("person 15"));
Assert.AreEqual(15, ParseAnInt("person15"));
Assert.AreEqual(15, ParseAnInt("15person"));
Assert.IsNull(ParseAnInt("nonumber"));
}
Метод возвращает значение null, если число не найдено - он также обрабатывает случай, когда число вызывает переполнение целого числа.
Чтобы уменьшитьвероятность переполнения вы могли бы вместо этого использовать long.TryParse
В равной степени, если вы ожидаете несколько групп цифр, и вы хотите проанализировать каждую группу как дискретный номер, который вы могли бы использовать Regex.Matches
- который вернет перечисляемыйвсех совпадений во входной строке.