我結束了一個正則表達式,因爲我已經在使用RegexKitLite,並且創建了這個NSString + SearchExtensions類。
.H:
// NSString+SearchExtensions.h
#import <Foundation/Foundation.h>
@interface NSString (SearchExtensions)
-(NSArray *)searchParts;
@end
.M:
// NSString+SearchExtensions.m
#import "NSString+SearchExtensions.h"
#import "RegexKitLite.h"
@implementation NSString (SearchExtensions)
-(NSArray *)searchParts {
__block NSMutableArray *items = [[NSMutableArray alloc] initWithCapacity:5];
[self enumerateStringsMatchedByRegex:@"\\w+|\"[\\w\\s]*\"" usingBlock: ^(NSInteger captureCount,
NSString * const capturedStrings[captureCount],
const NSRange capturedRanges[captureCount],
volatile BOOL * const stop) {
NSString *result = [capturedStrings[0] stringByReplacingOccurrencesOfRegex:@"\"" withString:@""];
NSLog(@"Match: '%@'", result);
[items addObject:result];
}];
return [items autorelease];
}
@end
這將返回與搜索字符串字符串的一個NSArray,消除圍繞短語雙引號。
你可能有一些運氣NSRegularExpression,雖然想出了一個可靠的單組對於這項任務可能是不可能的。 :-)另一種方法可能是在空間上分割(@「」),然後檢查每個單詞尋找以引號開頭或結尾的單詞,並將這些單詞合併成單個短語。 –