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

本文关键字:检查 字符串 是否 整数 包含 何检查 | 更新日期: 2023-09-27 18:27:42

我只想知道字符串变量是否包含可解析的正整数值。我现在不想解析该值。

目前我正在做:

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

这太难看了-如何更简洁

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

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

您可以使用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+$")

但数字可以大于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())
    // ...

这对我有用。

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

对不起,没有完全理解您的问题。这样的事情吗?

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

或者这个值必须是一个完整的整数,没有任何额外的字符串吗?

if(str.ToCharArray().All(char.IsDigit(c));
        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();

答案似乎是没有。

尽管还有很多好的其他答案,但它们要么只是掩盖了丑陋(我没有要求),要么引入了新的问题(边缘案例)。