C# 3.0 有没有比Double.TryParse更好的方法来测试C中的整数?

C# 3.0 有没有比Double.TryParse更好的方法来测试C中的整数?,c#-3.0,methods,C# 3.0,Methods,TryParse返回一个值,我不需要值。我需要能够判断一个字符串是否是数字,并且只返回bool 有办法做到这一点吗 一种方法是添加对Microsoft.VisualBasic的引用,然后使用Information.IsNumeric 一种方法是添加对Microsoft.VisualBasic的引用,然后使用Information.IsNumeric 好的,您可以使用正则表达式,但是为什么不放弃Double.TryParse中的值并继续呢?我认为复制这段代码是不值得的。好吧,您可以使用正则表达式,

TryParse返回一个值,我不需要值。我需要能够判断一个字符串是否是数字,并且只返回bool


有办法做到这一点吗

一种方法是添加对Microsoft.VisualBasic的引用,然后使用Information.IsNumeric


一种方法是添加对Microsoft.VisualBasic的引用,然后使用Information.IsNumeric


好的,您可以使用正则表达式,但是为什么不放弃Double.TryParse中的值并继续呢?我认为复制这段代码是不值得的。

好吧,您可以使用正则表达式,但为什么不直接放弃Double.TryParse中的值并继续?我认为复制这段代码是不值得的。

正则表达式怎么样

string s = "13.2";
bool bIsDecimal = Regex.IsMatch("^-?\d+(\.\d+)?$");

应该测试它是否是十进制值。它不会告诉你它是否是一个有效的十进制数,如中所示,数字是否适合十进制范围。

正则表达式如何

string s = "13.2";
bool bIsDecimal = Regex.IsMatch("^-?\d+(\.\d+)?$");
应该测试它是否是十进制值。它不告诉你的是它是否是一个有效的小数,如在,数字是否适合于小数的范围。

< P>我将确切地考虑你需要确定的。“是数字”比最初听起来更模糊。考虑下面的字符串,以及是否要考虑它们的数值:

楠 楠 无穷 0.000000000000000000000000000000000000000000000000001 1e5 1e500 1,000 +1 在en GB文化中使用Double.TryParse-不要忘记文化问题!会给你真的,假的,真的,真的,尽管它不能代表,真的,假的。对,对

如果您想知道稍后对Double.TryParse的调用是否会成功,那么在此处调用它将是最准确的解决方案。如果您使用的是其他条件,则正则表达式可能更合适。您可能使用的标准示例如下:

可以是+或-,但仅在第一个字符中 任何字符都可以有一个句点。你可能想避免在最后一个-应该1。有效吗? 除上述字符外,所有字符必须为数字 除上述第四个和最后一个例子外,其他所有例子都不允许

编辑:我现在注意到问题的标题包括整数。这将规范检查减少到:

是否允许前导零,例如-00012? 范围是多少? 你只需要小数而不是十六进制吗? 您需要接受数千个分隔符吗? 你对前导/尾随空格的政策是什么? 我会确切地考虑你需要确定什么。“是数字”比最初听起来更模糊。考虑下面的字符串,以及是否要考虑它们的数值:

楠 楠 无穷 0.000000000000000000000000000000000000000000000000001 1e5 1e500 1,000 +1 在en GB文化中使用Double.TryParse-不要忘记文化问题!会给你真的,假的,真的,真的,尽管它不能代表,真的,假的。对,对

如果您想知道稍后对Double.TryParse的调用是否会成功,那么在此处调用它将是最准确的解决方案。如果您使用的是其他条件,则正则表达式可能更合适。您可能使用的标准示例如下:

可以是+或-,但仅在第一个字符中 任何字符都可以有一个句点。你可能想避免在最后一个-应该1。有效吗? 除上述字符外,所有字符必须为数字 除上述第四个和最后一个例子外,其他所有例子都不允许

编辑:我现在注意到问题的标题包括整数。这将规范检查减少到:

是否允许前导零,例如-00012? 范围是多少? 你只需要小数而不是十六进制吗? 您需要接受数千个分隔符吗? 你对前导/尾随空格的政策是什么?
我刚刚启动了VisualStudioExpress 2005和2008。Intellisense说Double.TryParse的返回值是bool。以下内容在有限的测试下对我有效

double res; // you must be under very resource-constrained 
            // conditions if you can't just declare a double
            // and forget about it

if (Double.TryParse(textBox1.Text, out res)) {
    label1.Text = "it's a number";
} else {
    label1.Text = "not a number";
}

我刚刚启动了VisualStudioExpress 2005和2008。Intellisense说Double.TryParse的返回值是bool。以下内容在有限的测试下对我有效

double res; // you must be under very resource-constrained 
            // conditions if you can't just declare a double
            // and forget about it

if (Double.TryParse(textBox1.Text, out res)) {
    label1.Text = "it's a number";
} else {
    label1.Text = "not a number";
}
试试这个数字:

public static bool IsNumeric(object Expression)
{

}

试试这个数字:

public static bool IsNumeric(object Expression)
{


}

我确实在考虑这个问题,但我认为我必须添加额外的程序集,这很重要。你是说已经是.NET framework一部分的额外程序集?它仍然不会增加我的应用程序的大小?我确实在考虑这个问题,但我想我必须添加额外的程序集,这很重要。你是说额外的程序集吗已经是.NET framework一部分的程序集?它仍然不会增加我的应用程序的大小?+1。那是我通常做的事。我添加了VB方式作为替代。因为我正在我的博客上发布我的代码,我最不需要的是一些超级书呆子说得好

,你为什么不…:Dev是一个学习型的人,所以如果有超级电脑迷出现,只要给他荣誉并更新代码片段就行了。注意Double.TryParse将处理文化差异、千位分隔符、不同的十进制分隔符、指数值(如1E+05)等。如果你想支持这些,你真的没有太多选择。如果你只对整数感兴趣,那么。。。Int32.TryParse:+1。那是我通常做的事。我添加了VB方式作为替代。因为我正在我的博客上发布我的代码,我最不需要的是某个超级怪人说,好吧,你为什么不…:Dev是一个学习型的人,所以如果有超级电脑迷出现,只要给他荣誉并更新代码片段就行了。注意Double.TryParse将处理文化差异、千位分隔符、不同的十进制分隔符、指数值(如1E+05)等。如果你想支持这些,你真的没有太多选择。如果你只对整数感兴趣,那么。。。Int32.TryParse:我标记为答案的答案去了哪里?它被海报删除了,可能是因为它不是一个完整的解决方案,它只适用于正整数,并且由于它的问题开始被否决。它返回的值是解析是否成功。使用输出参数获得实际值。没有法律规定,如果解析成功,必须使用输出参数,如果需要整数,为什么要使用双浮点解析?我标记为答案的答案去了哪里?海报可能会删除它,因为它不是一个完整的解决方案,它只适用于正整数,并且由于存在问题而开始被降级。它返回的值是解析是否成功。使用输出参数获得实际值。没有法律规定如果解析成功就必须使用输出参数,如果想要整数,为什么要使用双浮点解析?它也不会检测是否使用了非英语分隔符。你可能无法用一个正则表达式覆盖数值表示的所有国际变体,虽然:-它也不会检测是否使用了非英语分隔符。您可能无法用单个正则表达式覆盖数字表示的所有国际变体,但是:-