我正在使用Visual Studio 2010.I想要检查字符串是否为数字。是否有内置函数来检查这个或我们是否需要编写自定义代码?
答案 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.TryParse,double.TryParse和decimal.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)
您可以使用Int32.TryParse()
答案 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.");