[英]In C#, how to check whether a string contains an integer?
我只想知道,字符串變量是否包含可解析的正整數值。 我現在不想解析該值。
目前我正在做:
int parsedId;
if (
(String.IsNullOrEmpty(myStringVariable) ||
(!uint.TryParse(myStringVariable, out parsedId))
)
{//..show error message}
這很丑 - 如何更簡潔?
注意:我知道擴展方法,但我想知道是否有內置的東西。
你可以使用char.IsDigit :
bool isIntString = "your string".All(char.IsDigit)
如果字符串是數字,則返回true
bool containsInt = "your string".Any(char.IsDigit)
如果字符串包含數字,則返回true
假設您要檢查字符串中的所有字符是否都是數字,您可以使用Enumerable.All 擴展方法和Char.IsDigit 方法,如下所示:
bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
也許這可以幫助
string input = "hello123world";
bool isDigitPresent = input.Any(c => char.IsDigit(c));
來自msdn 的回答。
您可以檢查字符串是否僅包含數字:
Regex.IsMatch(myStringVariable, @"^-?\d+$")
但是 number 可以大於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())
// ...
抱歉,沒有完全明白你的問題。 所以像這樣的事情?
str.ToCharArray().Any(char.IsDigit);
還是該值必須完全是整數,而沒有任何其他字符串?
if(str.ToCharArray().All(char.IsDigit(c));
這對我有用。
("your string goes here").All(char.IsDigit)
答案似乎是否定的。
盡管還有許多其他不錯的答案,但它們要么只是隱藏了丑陋之處(我沒有要求),要么引入了新問題(邊緣情況)。
string text = Console.ReadLine();
bool isNumber = false;
for (int i = 0; i < text.Length; i++)
{
if (char.IsDigit(text[i]))
{
isNumber = true;
break;
}
}
if (isNumber)
{
Console.WriteLine("Text contains number.");
}
else
{
Console.WriteLine("Text doesn't contain number.");
}
Console.ReadKey();
或林克:
string text = Console.ReadLine();
bool isNumberOccurance =text.Any(letter => char.IsDigit(letter));
Console.WriteLine("{0}",isDigitPresent ? "Text contains number." : "Text doesn't contain number.");
Console.ReadKey();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.