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

时间:2013-08-15 11:36:27

标签: c# string parsing integer tryparse

我只想知道,String变量是否包含可解析的正整数值。我现在不想解析这个值。

目前我在做:

int parsedId;
if (
    (String.IsNullOrEmpty(myStringVariable) ||
    (!uint.TryParse(myStringVariable, out parsedId))
)
{//..show error message}

这很难看 - 如何更简洁?

注意:我知道扩展方法,但我想知道是否有内置的东西。

8 个答案:

答案 0 :(得分:40)

您可以使用char.IsDigit

     bool isIntString = "your string".All(char.IsDigit)

如果字符串是数字

,将返回true
    bool containsInt = "your string".Any(char.IsDigit)

如果字符串包含数字

,则返回true

答案 1 :(得分:25)

假设您要检查字符串中的所有字符是否为数字,您可以将Enumerable.All Extension MethodChar.IsDigit Method一起使用,如下所示:

bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);

答案 2 :(得分:5)

您可以检查字符串是否仅包含数字:

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())
    // ...

答案 3 :(得分:4)

也许这可以帮助

string input = "hello123world";
bool isDigitPresent = input.Any(c => char.IsDigit(c));

来自msdn的答案。

答案 4 :(得分:3)

答案似乎是只是否。

虽然有很多其他好的答案,但他们要么隐藏丑陋(我没有要求),要么引入新问题(边缘案例)。

答案 5 :(得分:2)

这对我有用。

("your string goes here").All(char.IsDigit)

答案 6 :(得分:0)

抱歉,没有得到你的问题。这样的事情呢?

str.ToCharArray().Any(char.IsDigit);

或者该值是否必须是完整的整数,没有任何其他字符串?

if(str.ToCharArray().All(char.IsDigit(c));

答案 7 :(得分:0)

        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();

Linq:

        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();