【问题标题】:NSPredicate not workingNSPredicate 不起作用
【发布时间】:2011-12-06 00:24:25
【问题描述】:

我有这个字符串: <td align="right"><span> 19:45 </span></td>

我想在其上使用 NSPredicate 来搜索 19:45 部分,但我尝试的每个可能的组合都没有返回任何结果!我有点失去理智了,所以请帮忙!

我尝试过的事情:

NSString *timeStringPredicate = @"[0-9]:[0-9]";
NSPredicate *timeSearch = [NSPredicate predicateWithFormat:@"SELF like %@", timeStringPredicate];

if ([timeSearch evaluateWithObject:dayText]) {
NSLog(@"This is a time");
}

或者在这些可能性中:

NSString *timeStringPredicate = @"[0-9]\\:[0-9]";
NSString *timeStringPredicate = @"*[0-9]:[0-9]*";
NSString *timeStringPredicate = @"*[0-9]\\:[0-9]*";
NSString *timeStringPredicate = @"*.[0-9]:[0-9].*";
NSString *timeStringPredicate = @"*.[0-9]\\:[0-9].*";

关于其他一切。

救命!

【问题讨论】:

    标签: iphone ios regex search nspredicate


    【解决方案1】:

    like 不使用正则表达式语法。为此,您需要改用matches。详情请见The Predicate Programming Guide

    NSString *timeStringPredicate = @".*\\:[0-9].*";

    NSPredicate *timeSearch = [NSPredicate predicateWithFormat:@"SELF matches %@", timeStringPredicate];

    【讨论】:

    • 我阅读了编程指南。但在我的诚实意见中。苹果在提供清晰的例子方面并不是最好的。我也尝试了 MATCHES,唯一发生的事情就是崩溃。 MATCHES 语句的正确语法是什么?
    • 不,但不幸的是它就是这样做的......当我将语句切换到 MATCHES 时,它并没有超过 NSPredicate 部分。没有错误信息..只是退出...
    • NSString *timeStringPredicate = @".*\\:[0-9].*"; NSPredicate *timeSearch = [NSPredicate predicateWithFormat:@"SELF matches %@", timeStringPredicate]; 就是这样...
    【解决方案2】:

    尝试这样做:

    NSString *timeStringPredicate = @".*\\:[0-9].*";
    NSPredicate *timeSearch = [NSPredicate predicateWithFormat:@"SELF matches '%@'", timeStringPredicate];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多