簡體   English   中英

在 C# 中,如何檢查字符串是否包含整數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM