Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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 NSPredicate在NSString中搜索数字_Iphone_Nspredicate - Fatal编程技术网

Iphone NSPredicate在NSString中搜索数字

Iphone NSPredicate在NSString中搜索数字,iphone,nspredicate,Iphone,Nspredicate,我必须使用NSPredicate在NSString中查找数字。我正在使用以下代码 NSString *test = @"[0-9]"; NSString *testString = @"ab9"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(%@ CONTAINS[c] %@)", test,testString]; BOOL bResult = [predicate evaluateWithObject:testSt

我必须使用NSPredicate在NSString中查找数字。我正在使用以下代码

NSString *test = @"[0-9]";
NSString *testString = @"ab9";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(%@ CONTAINS[c] %@)", test,testString];
BOOL bResult = [predicate evaluateWithObject:testString];
此代码仅在开始时搜索号码。我也尝试过使用“[0-9]+”和“[0-9]*”这些表达式,但没有得到正确的结果

当你说

[predicate testString]
实际上,您正在向谓词对象发送“testString”消息(即:调用“testString”方法)。没有这样的事

我认为您应该发送的是“evaluateWithObject”消息,即:

BOOL bResult = [predicate evaluateWithObject:testString];
evaluateWithObject方法参考说明:

返回一个布尔值,该值指示给定对象是否匹配 接收方指定的条件

用这个

NSCharacterSet  *set= [NSCharacterSet alphanumericCharacterSet];
if ([string rangeOfCharacterFromSet:[set invertedSet]].location == NSNotFound) {
    // contains A-Z,a-z, 0-9 
} else {
    // invalid
}

查看它是否有效

使用NSCharacterSet分析NSString

NSCharacterSet  *set= [NSCharacterSet alphanumericCharacterSet];
NSString testString = @"This@9";

BOOL bResult = [testString rangeOfCharacterFromSet:[set invertedSet]].location != NSNotFound;
if(bResult)
    NSLog(@"symbol found");

set = [NSCharacterSet uppercaseLetterCharacterSet];
bResult = [password rangeOfCharacterFromSet:set].location != NSNotFound;
if(bResult)
    NSLog(@"upper case latter found");

set = [NSCharacterSet lowercaseLetterCharacterSet];
bResult = [password rangeOfCharacterFromSet:set].location != NSNotFound;
if(bResult)
    NSLog(@"lower case latter found");

set = [NSCharacterSet decimalDigitCharacterSet];
bResult = [password rangeOfCharacterFromSet:set].location != NSNotFound;
if(bResult)
    NSLog(@"digit found");

嗨,gerrytan,谢谢你的回复,在发布问题时输入错误,我使用的是BOOL-bResult=[predicate-evaluateWithObject:testString];在我的代码中,但我仍然没有得到结果。你只需要检查数字是否存在?谢谢amar的回复,我想搜索大写字母、小写字母和字符串中的数字。所以我选择正则表达式。此代码将只搜索数字。感谢amar的回复,看起来的NSCharacterSet是非常有用的类。