当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《有没有比在Double.TryParse中测试C#中的整数更好的方法?》经验,为你挑选了3个好方法。

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

有没有办法做到这一点?



1> Jon Skeet..:

我会考虑你需要确定的确切内容."数字"比起初听起来更模糊.考虑以下字符串,以及是否要将它们视为数字:

"南"

"南"

"无穷"

"0.000000000000000000000000000000000000000000000000001"

"1E5"

"1e500"

"1000"

"+1"

使用Double.TryParse(具有en-GB文化 - 不要忘记文化问题!)会给你真,假,真,真(尽管它不可​​表示),真,假.真,真.

如果你想告诉以后的呼叫是否Double.TryParse会成功,在这里调用它将是最准确的解决方案.如果您使用其他一些标准,正则表达式可能更合适.您可能使用的标准示例:

可以是+或 - ,但仅限于第一个字符

任何角色都可以有一个句号.你可能想在最后避免一个 - 应该"1".有效吗?

除此之外,所有字符必须是数字

除了上面的第四个也是最后一个例子之外,这将不允许.

编辑:我现在已经注意到问题的标题包括"整数".这大大减少了规范检查:

你想允许前导零(例如-00012)吗?

范围是多少?

你只需要小数(而不是十六进制等)吗?

你需要接受数千个分隔符吗?

您对领先/尾随空白的政策是什么?



2> angry person..:

好吧,你可以使用正则表达式,但为什么不放弃Double.TryParse中的值并继续前进?我认为尝试复制此代码的努力不值得.



3> Mitch Wheat..:

一种方法是添加引用Microsoft.VisualBasic然后使用Information.IsNumeric().

using Microsoft.VisualBasic;

...

if (Information.IsNumeric("1233434.0"))
{
    Console.WriteLine("Yes");
}

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有