内容
与えられた文字列を連続する(かもしれない)半角スペースか全角スペースで分割して配列で返してくれる。
使いどころ
アンド検索でキーワードを取得したいとき
結果
"堀口 イケメン" ー> [堀口,イケメン]
コード
こちらは、正規表現を利用した方法です。
下に別アプローチのコードも記載してあります
そちらの方がこの場合、スマートかもしれないです。
- (NSArray *)keywordsFromString:(NSString *)aString
{
NSRegularExpression *regexp =
[NSRegularExpression regularExpressionWithPattern:@"([^ ]+)"
options:0
error:nil];
NSArray *matches = [regexp matchesInString:aString options:0 range:NSMakeRange(0, aString.length)];
NSMutableArray *searchWords = [NSMutableArray arrayWithCapacity:matches.count];
for (NSTextCheckingResult *result in matches)
{
[searchWords addObject:[aString substringWithRange:[result rangeAtIndex:1]]];
}
return searchWords;
}
おことわり
ちゃんと出来てるかわからん
追記(2012/09/05)
コメント欄にて他のアプローチを教えて頂きました。
簡単に試しましたが、こちらの方がスマートだと思います。
NSString#componentsSeparatedByCharactersInSet:
NSArray#filteredArrayUsingPredicate:
をつかった方法
- (NSArray *)keywordsFromString:(NSString *)aString
{
NSArray *components = [aString componentsSeparatedByCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString:@" "]];
return [components filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"self != \"\""]];
}
tanBさん、
uasiさん 有り難うございます!