Tim*_*van 7 cocoa objective-c nsstring
我有一个搜索字符串,人们可以使用引号将短语组合在一起,并将其与单个关键字混合使用.例如,像这样的字符串:
"Something amazing" rooster
Run Code Online (Sandbox Code Playgroud)
我想把它分成一个NSArray,这样它就会Something amazing(没有引号)作为一个元素,而另一个元素rooster.
既不符合componentsSeparatedByString也不componentsSeparatedByCharactersInSet符合法案.有没有一种简单的方法可以做到这一点,还是我应该自己编写代码?
我最终使用了正则表达式,因为我已经在使用 RegexKitLite,并创建了这个 NSString+SearchExtensions 类别。
。H:
// NSString+SearchExtensions.h
#import <Foundation/Foundation.h>
@interface NSString (SearchExtensions)
-(NSArray *)searchParts;
@end
Run Code Online (Sandbox Code Playgroud)
.米:
// 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
Run Code Online (Sandbox Code Playgroud)
这将返回一个带有搜索字符串的 NSArray 字符串,删除短语周围的双引号。