使用自定义 uisearchbar 搜索字符串
Search for strings using custom uisearchbar
我正在开发一个 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;
您的要求非常简单易行。您需要一个忽略空格和连字符的字符串比较函数。所以我们执行以下操作:
- 首先去掉字符串中的空格和连字符
比较它们是否相等return结果。
-(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]);
}
我正在开发一个 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;
您的要求非常简单易行。您需要一个忽略空格和连字符的字符串比较函数。所以我们执行以下操作:
- 首先去掉字符串中的空格和连字符
比较它们是否相等return结果。
-(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]);
}