In C#, how to check whether a string contains an integer?

后端 未结 8 1174
慢半拍i
慢半拍i 2020-12-28 12:43

I just want to know, whether a String variable contains a parsable positive integer value. I do NOT want to parse the value right now.

Currently I

相关标签:
8条回答
  • 2020-12-28 13:20

    This work for me.

    ("your string goes here").All(char.IsDigit)
    
    0 讨论(0)
  • 2020-12-28 13:22

    Assuming you want to check that all characters in the string are digits, you could use the Enumerable.All Extension Method with the Char.IsDigit Method as follows:

    bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
    
    0 讨论(0)
  • 2020-12-28 13:25
            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();
    

    Or 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();
    
    0 讨论(0)
  • 2020-12-28 13:31

    You can check if string contains numbers only:

    Regex.IsMatch(myStringVariable, @"^-?\d+$")
    

    But number can be bigger than Int32.MaxValue or less than Int32.MinValue - you should keep that in mind.

    Another option - create extension method and move ugly code there:

    public static bool IsInteger(this string s)
    {
       if (String.IsNullOrEmpty(s))
           return false;
    
       int i;
       return Int32.TryParse(s, out i);
    }
    

    That will make your code more clean:

    if (myStringVariable.IsInteger())
        // ...
    
    0 讨论(0)
  • 2020-12-28 13:32

    Sorry, didn't quite get your question. So something like this?

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

    Or does the value have to be an integer completely, without any additional strings?

    if(str.ToCharArray().All(char.IsDigit(c));
    
    0 讨论(0)
  • 2020-12-28 13:39

    You could use char.IsDigit:

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

    Will return true if the string is a number

        bool containsInt = "your string".Any(char.IsDigit)
    

    Will return true if the string contains a digit

    0 讨论(0)
提交回复
热议问题