Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 检测字符是字母还是数字_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 检测字符是字母还是数字

Iphone 检测字符是字母还是数字,iphone,objective-c,ios,Iphone,Objective C,Ios,在objective-c中,如何检查单个字符是字母还是数字?我想删除所有其他字符。要删除非字母: NSString *letters = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; NSCharacterSet *notLetters = [[NSCharacterSet characterSetWithCharactersInString:letters] invertedSet]; NSString *newString

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

要删除非字母:

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]) { 
       ... 
    }
}
for(int i=0;i<[字符串长度];i++){
unichar c=[string characterAtIndex:i];
如果([成员:c]){
... 
}
}

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


NSString*文本=[…];
unichar字符=[文本字符索引:0];

BOOL isNumber=(character>='0'&&character您可以使用在ctype.h中声明的C函数(默认情况下包含在Foundation中)。但是要小心使用多字节字符。请检查


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

我搜索了一下,发现了这个:

尝试在每个字符上运行“[0-9]”的正则表达式,以确定它是否为数字

将数字保存到临时数组中,数组应仅以数字结束


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

有很多方法可以做到这一点,下面是一种使用字符集的方法:

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);

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

可能重复@dasblinkenlight,但我们需要更好地了解“消除所有其他字符”的方法意思更清楚。它是从字符串中消除,从测试结果中消除,还是其他什么?oops应该是字母数字的(不仅仅是字母),所以NSCharacterSet alphanumericCharacterSet。使用任意字符集仍然是不错的习惯用法。
NSCharacterSet *validChars = [NSCharacterSet alphanumericCharacterSet];
NSCharacterSet *invalidChars = [validChars invertedSet];

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

NSString *resultString = [components componentsJoinedByString:@""];
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);
NSCharacterSet *validChars = [NSCharacterSet alphanumericCharacterSet];
NSCharacterSet *invalidChars = [validChars invertedSet];

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

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