是否有Int.isWholeNumber()函数或类似的东西?

Nik*_*las 3 c# validation int

我需要检查输入是否为int.与Int.isWholeNumber()函数一样,String.IsNullOrEmpty()是否有类似的函数?

有没有办法在if()语句中验证这个,而不必在之前声明一个int?(正如你需要使用TryParse())

编辑
我需要验证区号(五个数字)

Eri*_*ert 12

我从您的评论中收集到您的实际问题是"如何确定此字符串是否包含有效的瑞典邮政编码?" 瑞典邮政编码是一个五位数字,不以零开头.如果这是您实际需要解决的问题,那么解决该问题.而不是尝试将字符串转换为整数,然后检查整数,我只是写支票说:

  • 字符串长五个字符?如果没有,拒绝它.
  • 字符串1,2,3,4,5,6,7,8或9的第一个字符是什么?如果没有,拒绝它.
  • 是字符串0,1,2,3,4,5,6,7,8或9的第二,第三,第四和第五个字符?如果没有,拒绝它.

就那么简单.如果你永远不会对它进行数学运算,那么首先不要将它转换为整数.

这种方法将进一步推广到更复杂的形式.我收集的瑞典邮政编码通常以"SE-12 345"的形式编写,即带有前缀"SE-"和数字2和3之间的空格.编写一个处理该格式的整数验证例程将非常困难,但编写字符串验证例程非常简单.

更一般地说,这说明了一些写问题的好建议.询问有关您实际必须解决的问题的问题.您假设了一个解决方案 - 将字符串解析为整数 - 然后开始询问有关您的假设解决方案的问题.这会自动阻止任何人提供特定于您真实问题的建议.也许读过这个的人已经开发了一个邮政编码验证软件库; 如果他们有,他们永远不会知道从你原来的问题告诉你.


Jon*_*eet 10

我不相信还有的BCL内的任何这样的方法,但它很容易写一个(我假设你真的在谈论一个字符串是否可以被解析为整数):

public static bool CanParse(string text)
{
    int ignored;
    return int.TryParse(text, out ignored);
}
Run Code Online (Sandbox Code Playgroud)

IFormatProvider根据需要添加接受值等的重载.假设这是用于验证,您可能希望将其展开以允许指定一系列有效值...

如果您正在进行大量自定义验证,您可能希望查看Fluent Validation项目.

  • 名人访问.我想没有标记这个,因为解决方案可能让我遇到麻烦SO =) (4认同)