在objective-c中,我如何检查单个字符是字母还是数字?我想消除所有其他角色。
答案 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不太熟悉,但这听起来像使用正则表达式模式可以实现。
我做了一些搜索,发现了这个:
尝试运行&#34; [0-9]&#34;的正则表达式在每个字符上确定它是否为数字。
将数字保存到临时数组中,您的数组最终只能包含数字。
我会输入代码...但正如我之前所说,我不熟悉obj-c。我希望这会有所帮助。
答案 6 :(得分:0)
您可以通过比较数字的ASCII值(0-9 ASCII范围为48-57)来检查它们。此外,您可以使用Objective C中的NSScanner来测试int或char。