字符串匹配objective-c
Posted
技术标签:
【中文标题】字符串匹配objective-c【英文标题】:String matching objective-c 【发布时间】:2011-05-28 13:31:04 【问题描述】:我需要这样匹配我的字符串:*myString*
其中*
表示任何子字符串。
我应该使用哪种方法?
你能帮帮我吗?
【问题讨论】:
@Mitch Wheat,这是“我应该使用哪种方法?” “你能帮帮我吗?”可能是一种修辞,虽然我猜你也可以回答这个问题。 【参考方案1】:如果您需要更高级的东西,请尝试https://github.com/dblock/objc-ngram。
【讨论】:
【参考方案2】:您无法使用 *(通配符)进行实际搜索,但您通常可以执行等效的操作:
相当于搜索theTerm*
:
if ([theString hasPrefix:@"theTerm"])
相当于搜索*theTerm
:
if ([theString hasSuffix:@"theTerm"])
或者,使用下图NSString
上的类别,下面相当于搜索*theTerm*
:
if ([theString containsString:@"theTerm"])
类别只是我们添加到类中的一种新方法(如函数)。我写了以下一个,因为通常认为一个字符串包含另一个字符串比处理NSRange
s 更有意义。
// category on NSString
@interface NSString (MDSearchAdditions)
- (BOOL)containsString:(NSString *)aString;
@end
@implementation NSString (MDSearchAdditions)
- (BOOL)containsString:(NSString *)aString
return [self rangeOfString:aString].location != NSNotFound;
@end
【讨论】:
对于 containsString 你可以做return [self rangeOfString:aString].location != NSNotFound;
【参考方案3】:
如果是 iPhone OS 3.2 或更高版本,请使用 NSRegularExpressionSearch。
NSString *regEx = [NSString stringWithFormat:@".*%@.*", yourSearchString];
NSRange range = [stringToSearch rangeOfString:regEx options:NSRegularExpressionSearch];
if (range.location != NSNotFound)
【讨论】:
我尝试使用您的代码但它不起作用,但如果我以这种方式使用: NSRange range = [@"hello pippo" rangeOfString:@".*pi.*" 选项: NSRegularExpressionSearch];这行得通!!为什么?特别是如果我使用正则表达式来 rangeOfString id 不起作用!?!?!?! 我注意到如果 textView.text 只是一个单词,它不起作用!! @user536926 抱歉现在修复。以上是关于字符串匹配objective-c的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C - NSInteger转换NSString
Objective-C,为啥这些 NSArrays 不匹配?
匹配来自 Objective-C 协议实例的 Swift 协议
如何使 Java 和 Objective-C (iPhone) 之间的 AES 加密相同?