【发布时间】:2011-05-28 13:31:04
【问题描述】:
我需要这样匹配我的字符串:*myString*
其中* 表示任何子字符串。
我应该使用哪种方法?
你能帮帮我吗?
【问题讨论】:
-
@Mitch Wheat,这是“我应该使用哪种方法?” “你能帮帮我吗?”可能是一种修辞,虽然我猜你也可以回答这个问题。
标签: iphone objective-c string string-matching
我需要这样匹配我的字符串:*myString*
其中* 表示任何子字符串。
我应该使用哪种方法?
你能帮帮我吗?
【问题讨论】:
标签: iphone objective-c string string-matching
如果您需要更高级的东西,请尝试https://github.com/dblock/objc-ngram。
【讨论】:
您无法使用 *(通配符)进行实际搜索,但您通常可以执行等效的操作:
相当于搜索theTerm*:
if ([theString hasPrefix:@"theTerm"]) {
相当于搜索*theTerm:
if ([theString hasSuffix:@"theTerm"]) {
或者,使用下图NSString上的类别,下面相当于搜索*theTerm*:
if ([theString containsString:@"theTerm"]) {
类别只是我们添加到类中的一种新方法(如函数)。我写了以下一个,因为通常认为一个字符串包含另一个字符串比处理NSRanges 更有意义。
// 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
【讨论】:
return [self rangeOfString:aString].location != NSNotFound;
如果是 iPhone OS 3.2 或更高版本,请使用 NSRegularExpressionSearch。
NSString *regEx = [NSString stringWithFormat:@".*%@.*", yourSearchString];
NSRange range = [stringToSearch rangeOfString:regEx options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
}
【讨论】: