如何检查.NET中的字符串是否为数字?

时间:2011-02-17 08:42:30

标签: c# string

如何检查.NET中的给定字符串是否为数字?

test1 - 是字符串

1232 - 是数字

test - 是字符串

tes3t - 是字符串

2323k - 是字符串

4567 - 是数字

如何使用系统功能执行此操作?

10 个答案:

答案 0 :(得分:32)

您可以编写一个测试每个字符的简单循环。

bool IsNumber(string s)
{
    foreach (char c in s)
    {
        if (!Char.IsDigit(c))
            return false;
    }
    return s.Any();
}

或者您可以使用LINQ。

bool IsNumber(string s)
{
    return s.Any() && s.All(c => Char.IsDigit(c));
}

如果您更关心字符串是否可以表示为int类型,而不是所有字符都是数字,则可以使用int.TryParse()

bool IsNumber(string s)
{
    int i;
    return int.TryParse(s, out i);
}

注意:如果您没有开始接受人们给您的答案,您将无法获得太多帮助。

答案 1 :(得分:13)

这将检查所有字符是否为数字(仅对于非负整数才为真)

inputString.All(c => IsDigit(c));

您也可以尝试正则表达式

string pattern = "^[-+]?[0-9]*\.?[0-9]*$";
Regex.IsMatch(inputString, pattern)

答案 2 :(得分:4)

如果ontputInt值为0(零),则使用int.TryParse(inputString,out outputInt),然后它不是数字。

答案 3 :(得分:1)

您可以使用Int32.TryParseInt64.TryParse尝试将字符串转换为数字。

否则,您也使用以下代码:

public Boolean IsNumber(String s)
{
    foreach (Char ch in s)
    {
        if (!Char.IsDigit(ch)) return false;
    }
    return true;
}

答案 4 :(得分:1)

像这样使用int.TryParse

var test = "qwe";
int result;
if(int.TryParse(test, out result))
{
    //if test is int you can access it here in result;
}

答案 5 :(得分:1)

对字符串使用相同的扩展方法。对于这个特定值,“123.56”的响应将取决于当前的文化。

    class Program
    {
        static void Main(string[] args)
        {
            string[] Values = {"123", "someword", "12yu", "123.56" };
            foreach(string val in Values)
                Console.WriteLine(string.Format("'{0}' - Is number?: {1}",val, val.IsNumber()));
        }
    }


    public static class StringExtension
    {        
        public static bool IsNumber(this String str)
        {
            double Number;
            if (double.TryParse(str, out Number)) return true;
            return false;            
        }
    }

答案 6 :(得分:1)

我们走了:

public static class StringExtensions
    {
        public static bool IsDigits(this string input)
        {
            return input.All(c => !c.IsDigit());
        }

        public static bool IsDigit(this char input)
        {
            return (input < '0' || input > '9');
        }

    }

使用以下方法调用时,它应返回true:

var justAString = "3131445";

var result = justAString.IsDigits();

答案 7 :(得分:0)

如果未指定长度,则必须通过字符比较求助于良好的旧字符,以确定字符是否为数字。

如果您希望它是一个具有固定位数的整数,比如一个32位整数,

然后你可以试试类似Int32.TryParse的东西。

答案 8 :(得分:0)

您可以使用

int parsed;
if( int.TryParse("is it a number?", out parsed) )

以下是原始问题中字符串的一组测试。 它使用了能够表现数字风格和文化的过载。

    [Test]
    public void FalseOnStringyString()
    {
        var sources = new []{"test1", "test", "tes3t", "2323k"};

        foreach (var source in sources)
        {
            int parsed;
            Assert.IsFalse(int.TryParse(source, NumberStyles.Any, CultureInfo.InvariantCulture, out parsed));
        }
    }

    [Test]
    public void TrueOnNumberyString()
    {
        var sources = new[] { "1232", "4567" };

        foreach (var source in sources)
        {
            int parsed;
            Assert.IsTrue(int.TryParse(source, NumberStyles.Any, CultureInfo.InvariantCulture, out parsed));
        }
    }

另一种解决方案是使用正则表达式。 但在这种情况下,该方法不输出数字。

    [Test]
    public void TrueOnNumberyStringRegex()
    {
        var sources = new[] { "1232", "4567" };

        var isNumber = new Regex(@"^\d+$");

        foreach (var source in sources)
        {
            Assert.IsTrue(isNumber.IsMatch(source));
        }
    }

    [Test]
    public void FalseOnNumberyStringRegex()
    {
        var sources = new[] { "test1", "test", "tes3t", "2323k" };

        var isNumber = new Regex(@"^\d+$");

        foreach (var source in sources)
        {
            Assert.IsFalse(isNumber.IsMatch(source));
        }
    }

答案 9 :(得分:0)

//public static bool IsAlphaNumeric(string inputString)
    //{
    //    bool alpha = false;
    //    bool num = false;
    //    int  l;
    //    try
    //    {
    //       foreach (char s in inputString )
    //        {
    //            if (!char.IsDigit(s))
    //            {
    //                alpha = true;

    //            }
    //            else
    //            {
    //                num = true;
    //            }


    //        }
    //       if (num == true && alpha == true)
    //       {
    //           return true;
    //       }
    //       else
    //       {
    //           return false;
    //       }

    //    }
    //    catch
    //    {
    //        return false;
    //    }

    //}