我需要检查输入是否为int。是否有与String.IsNullOrEmpty()类似的函数,就像Int.isWholeNumber()函数一样?
有没有办法只在if()
语句中验证这个,而不必在之前声明一个int? (正如你需要使用TryParse())
修改
我需要验证区号(五个数字)
答案 0 :(得分:12)
我从您的评论中收集到您的实际问题是“如何确定此字符串是否包含有效的瑞典邮政编码?”瑞典邮政编码是一个五位数字,不以零开头。如果这是您实际需要解决的问题,那么解决该问题。而不是尝试将字符串转换为整数,然后检查整数,我只会编写支票说:
这很简单。如果你永远不会对它进行数学运算,那么首先不要将它转换为整数。
这种方法将进一步推广到更复杂的形式。我收集的瑞典邮政编码通常以“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