Мне нравится подход @ Donut.
Хотелось бы добавить, что char.IsDigit
и char.IsNumber
также допускают некоторые символы Юникода, которые являются цифрами в других языках и сценариях ( см. Здесь ).
Если вы хотите проверить только цифры от 0 до 9, вы можете использовать "0123456789".Contains(c)
.
Три примера реализации:
Чтобы удалить завершающие нецифровые символы:
var digits = new string(input.Trim().TakeWhile(c =>
("0123456789").Contains(c)
).ToArray());
Для удаления начальных нецифровых символов:
var digits = new string(input.Trim().SkipWhile(c =>
!("0123456789").Contains(c)
).ToArray());
Чтобы удалить все нецифровые символы:
var digits = new string(input.Trim().Where(c =>
("0123456789").Contains(c)
).ToArray());
И конечно: int.Parse(digits)
или int.TryParse(digits, out output)