Double.TryParse返回一个值,我不需要值.我需要能够判断字符串是否为数字并且只返回一个bool.
有没有办法做到这一点?
我会考虑你需要确定的确切内容."数字"比起初听起来更模糊.考虑以下字符串,以及是否要将它们视为数字:
"南"
"南"
"无穷"
"0.000000000000000000000000000000000000000000000000001"
"1E5"
"1e500"
"1000"
"+1"
使用Double.TryParse
(具有en-GB文化 - 不要忘记文化问题!)会给你真,假,真,真(尽管它不可表示),真,假.真,真.
如果你想告诉以后的呼叫是否Double.TryParse
会成功,在这里调用它将是最准确的解决方案.如果您使用其他一些标准,正则表达式可能更合适.您可能使用的标准示例:
可以是+或 - ,但仅限于第一个字符
任何角色都可以有一个句号.你可能想在最后避免一个 - 应该"1".有效吗?
除此之外,所有字符必须是数字
除了上面的第四个也是最后一个例子之外,这将不允许.
编辑:我现在已经注意到问题的标题包括"整数".这大大减少了规范检查:
你想允许前导零(例如-00012)吗?
范围是多少?
你只需要小数(而不是十六进制等)吗?
你需要接受数千个分隔符吗?
您对领先/尾随空白的政策是什么?
好吧,你可以使用正则表达式,但为什么不放弃Double.TryParse中的值并继续前进?我认为尝试复制此代码的努力不值得.
一种方法是添加引用Microsoft.VisualBasic
然后使用Information.IsNumeric().
using Microsoft.VisualBasic; ... if (Information.IsNumeric("1233434.0")) { Console.WriteLine("Yes"); }