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

5

我正在使用Visual Studio 2010。我想检查一个字符串是否为数字。有没有内置的函数可以检查这个,还是我们需要编写自定义代码?


指向 TryParse 的人是正确的,但请记住,默认情况下会使用服务器上活动的当前文化进行解析。如果您期望特定的文化,则需要显式传递它。 - Lucero
1
你为什么接受了最差的答案? - Lucero
11个回答

19
你可以使用 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.TryParse, double.TryParsedecimal.TryParse 方法可用。

不过如果这是为了验证目的,你可能还考虑使用 ASP.NET 中内置的验证控件。这里有一个示例


1
那只涵盖了int类型,但还有很多其他数字类型。 - Jon Egerton
1
@Jon Egerton,我已经更新了我的答案,考虑到您的评论。 - Darin Dimitrov

6
您可以像这样做...
 string s = "sdf34";
    Int32 a;
    if (Int32.TryParse(s, out a))
    {
        // Value is numberic
    }  
    else
    {
       //Not a valid number
    }

“数字”应该包括小数。 - Istiaque Ahmed

4

2
是的,有方法可以实现这个功能:int.TryParse(...),检查out bool参数即可。

1

0
你可以使用内置方法Int.Parse或Double.Parse方法。你可以编写以下函数并在需要检查的地方调用它。
public static bool IsNumber(String str)
        {
            try
            {
                Double.Parse(str);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

1
自2005年(.NET 2.0)以来,就有“TryParse”方法 - 不要使用异常来进行正常程序流程! - Lucero

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 测试方法以获得更好的性能。

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

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;
        }

    }
}

这对你来说会起作用的!!


0
使用 IsNumeric() 方法来检查给定的字符串是否为数字。它总是返回 True,无论该值是 Int 还是 Double 类型。
string val=...; 
bool b1 = Microsoft.VisualBasic.Information.IsNumeric(val);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接