【问题标题】:Search for strings using custom uisearchbar使用自定义 uisearchbar 搜索字符串
【发布时间】:2015-08-28 00:00:57
【问题描述】:

我正在开发一个使用自定义搜索栏的 iOS 项目。即使我在搜索栏中输入 093003 或 093 003,我也希望能够搜索 093-003 之类的文本。

这是我比较字符串的地方。

 NSArray *tempAccountArray = _searchBarText.length > 0 ? 
[[WBCBusinessLogic sharedInstance].internalAccountsArray 
filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"displayName CONTAINS[cd] %@ || displayNumber LIKE %@", _searchBarText, _searchBarText]]:
[WBCBusinessLogic sharedInstance].internalAccountsArray; 

【问题讨论】:

  • 请分享一些代码
  • 代码全是零散的。即使我发布,也没有意义,因为它分布在不同的班级之间。如果你知道怎么做,你能分享一下逻辑吗?
  • @Somya 不要在 cmets 中发布代码。使用相关详细信息更新您的问题。

标签: objective-c uisearchbar


【解决方案1】:

这是我用来比较字符串的方法-

-(BOOL)doStringsMatch:(NSString*)first second:(NSString*)second
{
    first = [first stringByReplacingOccurrencesOfString:@"-" withString:@""];
    first = [first stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"First String: %@", first);

    second = [second stringByReplacingOccurrencesOfString:@"-" withString:@""];
    second = [second stringByReplacingOccurrencesOfString:@" " withString:@""];
    NSLog(@"Second String: %@", second);

    return ([first isEqual:second]);
}

【讨论】:

    【解决方案2】:

    您的要求很简单。您需要一个忽略空格和连字符的字符串比较函数。所以我们执行以下操作:

    • 首先去掉空格和连字符的字符串
    • 比较是否相等并返回结果。

      -(BOOL)doStringsMatch:(NSString*)first second:(NSString*)second
      {
           NSCharacterSet *skip = [NSCharacterSet characterSetWithCharactersInString:@"- "];
      
        return ([[first stringByTrimmingCharactersInSet:skip] isEqual:[second stringByTrimmingCharactersInSet:skip]]);
      
      }
      

    编辑: 这只会修剪字符串开头或结尾的字符。对于使用正则表达式的更清洁的解决方案: https://stackoverflow.com/a/13177885/1616513

    【讨论】:

    • stringByTrimmingCharacterInSet 只会修剪字符串开头或结尾的字符。最好使用 stringByReplacingOccurencesOfString。感谢您的帮助:)
    • 你是对的。我错过了匆忙:D。但我建议您改用正则表达式。干净多了stackoverflow.com/a/13177885/1616513
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多