c#代码检查字符串是否为数字

时间:2011-05-26 11:49:41

标签: c# .net asp.net

我正在使用Visual Studio 2010.I想要检查字符串是否为数字。是否有内置函数来检查这个或我们是否需要编写自定义代码?

11 个答案:

答案 0 :(得分:18)

您可以使用int.TryParse方法。例如:

string s = ...
int result;
if (int.TryParse(s, out result))
{
    // The string was a valid integer => use result here
}
else
{
    // invalid integer
}

对于除整数之外的其他数字类型,还有float.TryParsedouble.TryParsedecimal.TryParse方法。

但如果这是出于验证目的,您也可以考虑使用built-in Validation controls in ASP.NET。这是example

答案 1 :(得分:6)

你可以这样做......

 string s = "sdf34";
    Int32 a;
    if (Int32.TryParse(s, out a))
    {
        // Value is numberic
    }  
    else
    {
       //Not a valid number
    }

答案 2 :(得分:4)

答案 3 :(得分:2)

是的:int.TryParse(...)检查out bool参数。

答案 4 :(得分:1)

答案 5 :(得分:0)

您可以使用内置方法Int.Parse或Double.Parse方法。您可以编写以下函数并在必要时调用它来进行检查。

public static bool IsNumber(String str)
        {
            try
            {
                Double.Parse(str);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

答案 6 :(得分:0)

所有Double / Int32 / ... TryParse(...)方法的问题是,如果数字字符串足够长,该方法将返回false;

例如:

var isValidNumber = int.TryParse("9999999999", out result);

此处,isValidNumber为false,result为0,但给定字符串为数字。

如果您不需要将字符串用作int,我会使用正则表达式验证:

var isValidNumber = Regex.IsMatch(input, @"^\d+$")

这只会匹配整数。例如,“123.45”将失败。

如果需要检查浮点数:

var isValidNumber = Regex.IsMatch(input, @"^[0-9]+(\.[0-9]+)?$")

注意:尝试创建一个Regex对象并将其发送到int测试方法以获得更好的性能。

答案 7 :(得分:0)

试试这个:

string Str = textBox1.Text.Trim();
double Num;
bool isNum = double.TryParse(Str, out Num);
if (isNum)
    MessageBox.Show(Num.ToString());
else
    `enter code here`MessageBox.Show("Invalid number");

答案 8 :(得分:0)

使用 IsNumeric()检查给定的字符串是否为数字。无论是 Int 还是 Double ,它始终会返回 True 作为数值。

string val=...; 
bool b1 = Microsoft.VisualBasic.Information.IsNumeric(val);

答案 9 :(得分:0)

using System;

namespace ConsoleApplication1
{
    class Test
    {

        public static void Main(String[] args)
        {
            bool check;
            string testStr = "ABC";
            string testNum = "123";
            check = CheckNumeric(testStr);
            Console.WriteLine(check);
            check = CheckNumeric(testNum);
            Console.WriteLine(check);
            Console.ReadKey();

        }

        public static bool CheckNumeric(string input)
        {
            int outPut;
            if (int.TryParse(input, out outPut))
                return true;

            else
                return false;
        }

    }
}

这将为您服务!

答案 10 :(得分:-1)

试试这个 - >

String[] values = { "87878787878", "676767676767", "8786676767", "77878785565", "987867565659899698" };

if (Array.TrueForAll(values, value =>
{
    Int64 s;
    return Int64.TryParse(value, out s);
}
))

Console.WriteLine("All elements are  integer.");
else
Console.WriteLine("Not all elements are integer.");