7

我是说 :

1231 YES
121.1241 NO
121,1241 NO
-121 NO
124a NO

我怎样才能在 C# 中更快地做到这一点?

4

3 回答 3

19
int x;
if (int.TryParse(str, out x) && x > 0)
于 2012-04-15T13:01:25.330 回答
9

您可以检查它是否仅包含数字:

if (theString.All(Char.IsDigit))
于 2012-04-15T13:06:48.417 回答
5

实际解析它的另一种方法是检查字符串是否为非空且+包含数字,如果您愿意,可以选择带前导符号。

请注意,这不会执行任何范围检查 - 因此 9999999999999999999999999999999999 将是有效的,即使它不适合 aint或 a long

您可以为此使用正则表达式,或者可能使用 LINQ:

var nonNegative = text.Length > 0 && text.All(c => c >= '0' && c <= '9');

(这类似于 Guffa 的Char.IsDigit方法,但仅限于 ASCII 数字。Unicode 中有许多非 ASCII 数字。)

请注意,这会将其限制为非负值- 而不仅仅是正值。您想如何处理“0”和“0000”?

于 2012-04-15T13:06:36.963 回答