如何检查字符串是否为正整数?

mar*_*zzz 5 c# int parsing

我的意思是 :

1231 YES
121.1241 NO
121,1241 NO
-121 NO
124a NO
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C#中更快地完成它?

SLa*_*aks 17

int x;
if (int.TryParse(str, out x) && x > 0)
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 10

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

if (theString.All(Char.IsDigit))
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

实际解析它的另一种方法是检查字符串是否为非空且包含数字,+如果您想允许,则可选择使用前导符号.

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

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

var nonNegative = text.Length > 0 && text.All(c => c >= '0' && c <= '9');
Run Code Online (Sandbox Code Playgroud)

(这类似于Guffa的Char.IsDigit方法,但将其自身限制为ASCII数字.在Unicode中有许多非ASCII数字.)

请注意,这会将其限制为非负值 - 而不仅仅是正值.你想怎么对待"0"和"0000"?