Objective c 使用自定义uisearchbar搜索字符串

Objective c 使用自定义uisearchbar搜索字符串,objective-c,uisearchbar,Objective C,Uisearchbar,我正在一个iOS项目中工作,我正在使用一个自定义搜索栏。即使我在搜索栏中键入093003或093 003,我仍然希望能够搜索像093-003这样的文本 这就是我比较字符串的地方 NSArray *tempAccountArray = _searchBarText.length > 0 ? [[WBCBusinessLogic sharedInstance].internalAccountsArray filteredArrayUsingPredicate:[NSPredicate p

我正在一个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; 

你所要求的是很简单的。您需要一个忽略空格和连字符的字符串比较函数。因此,我们采取以下措施:

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

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

  return ([[first stringByTrimmingCharactersInSet:skip] isEqual:[second stringByTrimmingCharactersInSet:skip]]);

}
编辑: 这仅从字符串的开头或结尾修剪字符。对于使用正则表达式的更干净的解决方案:
这是我用来比较字符串的方法-

-(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]);
}

请分享一些代码。代码都是分散的。即使我发帖,也没有意义,因为它分布在不同的类之间。如果你知道怎么做,你能分享一下逻辑吗?@Somya不要在评论中发布代码。使用相关详细信息更新您的问题。StringByTrimmingCharacteristent仅从字符串的开头或结尾修剪字符。最好使用stringbyreplacingoccurrencesofstring。谢谢你的帮助:你说得对。我在匆忙中错过了:D。但我建议你改用正则表达式。它干净多了。