【问题标题】:Not getting expected NSComparison value没有得到预期的 NSComparison 值
【发布时间】:2012-01-01 21:24:31
【问题描述】:

我正在尝试通过比较列表中的值('stringToCompare')和用户输入的搜索文本('searchText')来进行过滤。代码 sn-p 如下。

NSComparisonResult result = [stringToCompare compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
NSLog(@"Search text: %@", searchText);
NSLog(@"string to compare: %@", stringToCompare);
NSLog(@"result: %i", result);
NSLog(@"NSOrderedsame: %i", NSOrderedSame);
if (result == NSOrderedSame)
{
   [self.filteredListContent addObject:genericObj];
}

但是,从下面的 NSLog 结果中可以看出,我似乎无法获得预期的结果。在这种情况下,我希望结果为“0”,因为搜索文本“Xot”可以作为“stringToCompare”的一部分找到。我在这里错过了什么?

2012-01-02 05:13:59.184 onethingaday[5815:707] search text: Xot
2012-01-02 05:13:59.185 onethingaday[5815:707] string to compare: One exotic place you got laid in before. How was it?
2012-01-02 05:13:59.188 onethingaday[5815:707] result: -1
2012-01-02 05:13:59.188 onethingaday[5815:707] NSOrderedsame: 0

【问题讨论】:

    标签: objective-c string search string-comparison


    【解决方案1】:

    您是在比较整个字符串,而不是寻找出现的地方。试试这个:

    NSRange r = [stringToCompare rangeOfString:searchText
                                 options:NSCaseInsensitiveSearch];
    
    if ( r.location != NSNotFound )
    {
        NSLog(@"String found at position: %d",r.location);
    }
    

    【讨论】:

      【解决方案2】:

      -compare: 不搜索子字符串,它比较范围内的完整字符串。你得到了预期的结果,向你展示了字符串 'Xot' 与完整的字符串 'One exotic place you got in before 的比较。怎么样?'。

      【讨论】:

        猜你喜欢
        • 2022-10-15
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 2014-05-14
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多