如何检查字符是否为整数

30

我正在寻找一个函数,可以检查一个字符是否为整数,如果是,则执行某些操作。

char a = '1';

if (Function(a))
{
  do something
}

附注:您应该考虑是否需要“整数”(作为数字序列 - 有几个类似的字符),“数字”(多种语言中的0-9)或“数字”(1/2,...)。 - Alexei Levenkov
9个回答

40

1
对于IsDigit和IsNumber都加1。请注意,它们都不能保证字符是“整数”,因为IsDigit仅表示它是潜在更长整数的数字,而IsNumber可能是浮点数(即1/2)。 - Alexei Levenkov
1
IsDigit覆盖了0-9以及其他字符集中的等价物,并且对于单个字符始终为整数(对于较长的字符串,请使用Integer.TryParse)。IsNumber不仅对0-9返回true,还对“数字,其他”和“数字,字母”组中的一些更有趣的Unicode字符返回true,例如½(这是1个字符)http://www.fileformat.info/info/unicode/category/No/list.htm。 - lgaud
IsDigit将为所有这些字符返回true;除了0-9之外,它们在英语机器上使用默认文化设置通过int.TryParse不会被解析为整数 - http://www.fileformat.info/info/unicode/category/Nd/list.htm - lgaud

25

6
bool Char.IsDigit(char c); 方法在这种情况下应该完美地工作。
char a = '1';

if (Char.IsDigit(a))
{
  //do something
}

6

1
IsNumeric对于非数字字符返回“true”:https://dev59.com/TXVC5IYBdhLWcg3woSxW - D Stanley
谢谢你提醒我关于IsNumber的事情,我之前并不知道。我会从我的答案中删除它。你知道Integer.TryParse对于非数字字符是否也起到同样的作用吗? - lhan
从未尝试过,但考虑到美国文化,我认为它只会考虑 0-9 - D Stanley

2
尝试使用 System.Char.IsDigit 方法。

1

尝试使用Char.IsNumber。可以在这里找到文档和示例。


0

最好使用switch语句。像这样:

switch(a)
{
  case '1':
    //do something.
    break;
  case '2':
    // do something else.
    break;
  default: // Not an integer
    throw new FormatException();
    break;
}

只要你只寻找0-9的字符,这个方法就可以工作。如果超出了这个范围(比如"10"),那么它将被视为字符串而不是字符。如果你想判断某个输入是否为整数且该输入为字符串,你可以这样做:
try
{
  Convert.ToInt32("10")
}
catch (FormatException err)
{
  // Not an integer, display some error.
}

0
我需要检查一个字符串的前两个字符,如果第三个字符是数字,则使用MyString.All(char.IsDigit)进行操作。
if (cAdresse.Trim().ToUpper().Substring(0, 2) == "FZ" & cAdresse.Trim().ToUpper().Substring(2, 1).All(char.IsDigit))

-1

最简单的答案是:

char chr = '1';
char.isDigit(chr)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接