判断 char 是数字还是字母

问题描述 投票:0回答:8

如何确定C中的

char
(例如
a
9
)是数字还是字母?

使用比较好:

int a = Asc(theChar);

还是这个?

int a = (int)theChar
c char alphanumeric
8个回答
124
投票

您需要使用

isalpha()
中的
isdigit()
<ctype.h>
标准函数。

char c = 'a'; // or whatever

if (isalpha(c)) {
    puts("it's a letter");
} else if (isdigit(c)) {
    puts("it's a digit");
} else {
    puts("something else?");
}

38
投票

字符只是整数,因此您实际上可以将字符与文字进行直接比较:

if( c >= '0' && c <= '9' ){

这适用于所有角色。 查看您的 ascii 表

ctype.h 还提供了为您执行此操作的函数。


14
投票

<ctype.h>
包括一系列用于确定
char
表示字母还是数字的函数,例如
isalpha
isdigit
isalnum

int a = (int)theChar
不会做你想要的事情的原因是因为
a
只会保存代表特定字符的整数值。例如,
'9'
的 ASCII 数字是 57,
'a'
的 ASCII 数字是 97。

也适用于 ASCII:

  • 数字 -
    if (theChar >= '0' && theChar <= '9')
  • 按字母顺序 -
    if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')

亲自查看 ASCII 表


12
投票

这些都没有任何用处。使用标准库中的

isalpha()
isdigit()
。他们在
<ctype.h>


7
投票

如果

(theChar >= '0' && theChar <='9')
是一个数字。你明白了。


6
投票

您通常可以使用简单的条件检查 ASCII 字母或数字

if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
    /*This is an alphabet*/
}

对于数字,您可以使用

if (ch >= '0' && ch <= '9')
{
    /*It is a digit*/
}

但是由于 C 中的字符在内部被视为 ASCII 值,您也可以使用 ASCII 值来检查相同的内容。

如何判断一个字符是数字还是字母


3
投票

C99 标准

c >= '0' && c <= '9'

c >= '0' && c <= '9'
(在另一个答案中提到)之所以有效,是因为C99 N1256标准草案5.2.1“字符集”说:

在源和执行基本字符集中, 上述十进制数字列表中 0 后面的每个字符的值应比前一个字符的值大 1。

但是不保证 ASCII。


0
投票
def is_valid(s): #检查字符串长度的变量 长度 = len(s) #variable 检查前 2 个字母 第一个_两个 = s[0:2] #变量来检查最后一个字符 检查最后=真 if length>2 and s.isalpha() == False: #表示字符串必须有数字 位置 = 0 最后一个字符 = s[2:] #below循环用于查找第一个数字的位置 对于范围内的 i(len(last_chars)): 如果last_chars[i].isalpha(): 继续 如果last_chars[i].isdigit(): 位置 = 我 休息 num = 最后一个字符[位置:] 如果 num[0] == "0" 或 num.isnumeric()==False: check_last=假 返回 s.isalnum() 且长度 >=2 且长度

<=6 and first_two.isalpha() and check_last

© www.soinside.com 2019 - 2024. All rights reserved.