如果我有这些字符串:

"abc" =假 "123" =真 "ab2" = false

是否有一个命令,如IsNumeric()或其他命令,可以识别字符串是否是有效的数字?


当前回答

你还可以使用:

using System.Linq;

stringTest.All(char.IsDigit);

它将返回true对于所有数字(不是浮点)和false如果输入字符串是任何类型的字母数字。

Test case Return value Test result
"1234" true ✅Pass
"1" true ✅Pass
"0" true ✅Pass
"" true ⚠️Fail (known edge case)
"12.34" false ✅Pass
"+1234" false ✅Pass
"-13" false ✅Pass
"3E14" false ✅Pass
"0x10" false ✅Pass

请注意:stringTest不应该是空字符串,因为这将通过是否是数字的测试。

其他回答

在c# 7中,你可以内联out变量:

if(int.TryParse(str, out int v))
{
}

如果你想知道一个字符串是否是一个数字,你可以尝试解析它:

var numberString = "123";
int number;

int.TryParse(numberString , out number);

注意,TryParse返回一个bool值,您可以使用它来检查解析是否成功。

在项目中导入Visual Basic引用并使用其信息。IsNumeric方法,如下所示,并且能够捕获浮点数以及整数,不像上面的答案只捕获int。

    // Using Microsoft.VisualBasic;

    var txt = "ABCDEFG";

    if (Information.IsNumeric(txt))
        Console.WriteLine ("Numeric");

IsNumeric("12.3"); // true
IsNumeric("1"); // true
IsNumeric("abc"); // false

我已经使用了这个函数几次:

public static bool IsNumeric(object Expression)
{
    double retNum;

    bool isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
    return isNum;
}

但你也可以用;

bool b1 = Microsoft.VisualBasic.Information.IsNumeric("1"); //true
bool b2 = Microsoft.VisualBasic.Information.IsNumeric("1aa"); // false

从基准测试IsNumeric选项

(来源:aspalliance.com)

(来源:aspalliance.com)

您可以使用TryParse来确定该字符串是否可以解析为整数。

int i;
bool bNum = int.TryParse(str, out i);

布尔值会告诉你它是否有效。