Я имею в виду:Как проверить, является ли строка положительным целым?
1231 YES
121.1241 NO
121,1241 NO
-121 NO
124a NO
как я могу сделать это быстрее в C#?
Я имею в виду:Как проверить, является ли строка положительным целым?
1231 YES
121.1241 NO
121,1241 NO
-121 NO
124a NO
как я могу сделать это быстрее в C#?
int x;
if (int.TryParse(str, out x) && x > 0)
Почему бы не 'uint.TryParse (str, out x)' вместо этого? я могу представить, что он также более эффективен, так как он не должен проверять на '-' – Firo
Я думаю, что ему нужно немного больше объяснений (вместо написания кода). –
Альтернатива фактически разбор это проверить, если строка не является пустой и только содержит цифры, необязательно с ведущим +
знаком, если вы хотите, чтобы позволить.
Обратите внимание, что это не будет выполнять проверку диапазона - так что 999999999999999999999999999999999999 будет действительным, хотя он не будет вписываться в int
или long
.
Вы можете использовать регулярное выражение для этого, или, возможно, LINQ:
var nonNegative = text.Length > 0 && text.All(c => c >= '0' && c <= '9');
(. Это похоже на Char.IsDigit
подход Guffa, но ограничивает себя ASCII цифр Есть множество не-ASCII цифр в Unicode.)
Обратите внимание, что это приведет к ограничению его неотрицательных ценности - не просто положительных значения. Как вы хотите лечить «0» и «0000»?
Вы можете проверить, если он содержит только цифры:
if (theString.All(Char.IsDigit))
целое положительное число в каком диапазоне? (Что он должен делать для значений, больших, чем 'int.MaxValue' или' int.LongValue'?) Имеются ли ведущие пробелы? Как насчет знака «впереди»? –
О, а как насчет 0? Вы действительно имели в виду * позитивный * или неотрицательный? –
Как насчет '1.0'? –