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

时间:2011-05-06 12:31:00

标签: c# int validation

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

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

修改
我需要验证区号(五个数字)

8 个答案:

答案 0 :(得分: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之间的空格。编写一个处理该格式的整数验证例程将会非常困难,但编写一个字符串验证例程很简单。

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

答案 1 :(得分:10)

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

public static bool CanParse(string text)
{
    int ignored;
    return int.TryParse(text, out ignored);
}

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

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

答案 2 :(得分:2)

您可以通过扩展方法实现此目的:

您使用

bool isNumber = "-1990".IsNumber();

这是代码:

public static class NumberStringExtension
{

    public static bool IsNumber(this string value)
    {
        int i = 0;
        return int.TryParse(value, out i));
    }

}

答案 3 :(得分:1)

使用Int.TryParse或制作自定义功能。

function bool IsNumber(object number)
{
  try
  {
    Convert.ToInt32(number.ToString());
    return true;
  }
  catch
  {
   return false;
  }
}

答案 4 :(得分:1)

查看int.TryParse是否给出了答案,并确保输入字符串中没有小数点。 (如果有人输入“1”作为输入,这将给你误报。)

string input;
int ignored;

bool wholeNumber = int.TryParse(input, out ignored) && input.indexOf('.') == -1;

答案 5 :(得分:0)

根据定义,

int类型必须是整数。它必须是double,float或decimal类型才能是非整数。您始终可以尝试测试输入的类型。

或者输入是字符串?如果输入是字符串,您可以尝试搜索“。”或','字符(取决于文化)。或者你可以尝试解析为整数。

答案 6 :(得分:0)

由于每个int都是一个整数,这很容易:

public static bool IsWholeNumber(int i)
{
    return true;
}

答案 7 :(得分:-2)

如果你只想在if语句中验证它,你可以做到

If ( val % 1 > 0)
  //not whole number