I mean :
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)
呢?我可以想象这样做也更有效率,因为它不需要检查“-”。 - Firoif (theString.All(Char.IsDigit))
除了实际解析字符串之外,另一种方法是检查该字符串是否非空且仅包含数字,如果需要,可以带有前导的+
符号以允许它。
请注意,这种方法不会执行任何范围检查 - 因此,即使9999999999999999999999999999999999不能适合int
或long
中,它仍然有效。
您可以使用正则表达式或可能使用 LINQ 来实现:
var nonNegative = text.Length > 0 && text.All(c => c >= '0' && c <= '9');
int.MaxValue
或int.LongValue
的值应该怎么处理?)前导空格是否有效?前导加号呢? - Jon Skeet