如果我有这些字符串:
"abc" =假 "123" =真 "ab2" = false
是否有一个命令,如IsNumeric()或其他命令,可以识别字符串是否是有效的数字?
如果我有这些字符串:
"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不应该是空字符串,因为这将通过是否是数字的测试。
其他回答
如果你想知道一个字符串是否是一个数字,你可以尝试解析它:
var numberString = "123";
int number;
int.TryParse(numberString , out number);
注意,TryParse返回一个bool值,您可以使用它来检查解析是否成功。
bool is_number(string str, char delimiter = '.')
{
if(str.Length==0) //Empty
{
return false;
}
bool is_delimetered = false;
foreach (char c in str)
{
if ((c < '0' || c > '9') && (c != delimiter)) //ASCII table check. Not a digit && not delimeter
{
return false;
}
if (c == delimiter)
{
if (is_delimetered) //more than 1 delimiter
{
return false;
}
else //first time delimiter
{
is_delimetered = true;
}
}
}
return true;
}
在项目中导入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
你还可以使用:
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))
{
}