LoginSignup
2
2

More than 5 years have passed since last update.

文字列をホワイトスペースで分割する

Last updated at Posted at 2012-09-05

内容

与えられた文字列を連続する(かもしれない)半角スペースか全角スペースで分割して配列で返してくれる。

使いどころ

アンド検索でキーワードを取得したいとき

結果

"堀口 イケメン" ー> [堀口,イケメン]

コード

こちらは、正規表現を利用した方法です。

下に別アプローチのコードも記載してあります

そちらの方がこの場合、スマートかもしれないです。

- (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さん 有り難うございます!

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2