检测字符是字母还是数字

时间:2011-12-13 15:35:46

标签: iphone objective-c ios

在objective-c中,我如何检查单个字符是字母还是数字?我想消除所有其他角色。

7 个答案:

答案 0 :(得分:8)

消除非字母:

NSString *letters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
NSCharacterSet *notLetters = [[NSCharacterSet characterSetWithCharactersInString:letters] invertedSet];
NSString *newString = [[string componentsSeparatedByCharactersInSet:notLetters] componentsJoinedByString:@""];

一次检查一个字符:

for (int i = 0; i < [string length]; i++) {
    unichar c = [string characterAtIndex:i];
    if ([notLetters characterIsMember:c]) { 
       ... 
    }
}

答案 1 :(得分:6)

NSCharacterSet *validChars = [NSCharacterSet alphanumericCharacterSet];
NSCharacterSet *invalidChars = [validChars invertedSet];

NSString *targetString = [[NSString alloc] initWithString: @"..."];
NSArray *components = [targetString componentsSeparatedByCharactersInSet:invalidChars];

NSString *resultString = [components componentsJoinedByString:@""];

答案 2 :(得分:5)

许多方法,这里是一个使用字符集:

unichar ch = '5';

BOOL isLetter = [[NSCharacterSet letterCharacterSet] characterIsMember: ch];

BOOL isDigit  = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember: ch];

NSLog(@"'%C' is a letter: %d or a digit %d", ch, isLetter, isDigit);

答案 3 :(得分:2)

您可以使用ctype.h中声明的C函数(默认情况下包含在Foundation中)。但要注意多字节字符。查看man pages

char c = 'a';
if (isdigit(c)) {
    /* ... */
} else if (isalpha(c)) {
    /* ... */
}

/* or */
if (isalnum(c))
    /* ... */

答案 4 :(得分:0)

检查某个字符是否为(阿拉伯语)数字:


NSString* text = [...];
unichar character = [text characterAtIndex:0];

BOOL isNumber = (character >= '0' && character <= '9');

如果您想知道其他数字字符(印度数字,日语数字等),那将会有所不同。

字符是否是字母取决于字母的含义。 ASCII字母? Unicode字母?

答案 5 :(得分:0)

我对obj-c不太熟悉,但这听起来像使用正则表达式模式可以实现。

我做了一些搜索,发现了这个:

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html

尝试运行&#34; [0-9]&#34;的正则表达式在每个字符上确定它是否为数字。

将数字保存到临时数组中,您的数组最终只能包含数字。

我会输入代码...但正如我之前所说,我不熟悉obj-c。我希望这会有所帮助。

答案 6 :(得分:0)

您可以通过比较数字的ASCII值(0-9 ASCII范围为48-57)来检查它们。此外,您可以使用Objective C中的NSScanner来测试int或char。