在C#中,如何检查字符串是否包含整数?
我只想知道,String变量是否包含可解析的正整数值。 我现在不想解析这个值。
目前我在做:
int parsedId; if ( (String.IsNullOrEmpty(myStringVariable) || (!uint.TryParse(myStringVariable, out parsedId)) ) {//..show error message}
这很难看 – 如何更简洁?
注意:我知道扩展方法,但我想知道是否有内置的东西。
假设您要检查字符串中的所有字符是否为数字,您可以使用Enumerable.All扩展方法和Char.IsDigit方法 ,如下所示:
bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
你可以使用char.IsDigit :
bool isIntString = "your string".All(char.IsDigit)
如果字符串是数字,则返回true
bool containsInt = "your string".Any(char.IsDigit)
如果字符串包含数字,则返回true
您可以检查字符串是否仅包含数字:
Regex.IsMatch(myStringVariable, @"^-?\d+$")
但是数字可以大于Int32.MaxValue
或小于Int32.MinValue
– 你应该记住这一点。
另一种选择 – 创建扩展方法并在那里移动丑陋的代码:
public static bool IsInteger(this string s) { if (String.IsNullOrEmpty(s)) return false; int i; return Int32.TryParse(s, out i); }
这将使您的代码更干净:
if (myStringVariable.IsInteger()) // ...
也许这可以帮助
string input = "hello123world"; bool isDigitPresent = input.Any(c => char.IsDigit(c));
从msdn回答。
答案似乎是没有。
虽然有很多其他好的答案,但它们要么隐藏丑陋(我没有要求),要么引入新问题(边缘案例)。
对不起,没有得到你的问题。 这样的事情呢?
str.ToCharArray().Any(char.IsDigit);
或者值是否必须完全是整数,没有任何额外的字符串?
if(str.ToCharArray().All(char.IsDigit(c));