条件に合致する文字のみ取得する方法

テキストフィールドなどから入力された文字列より、条件に合致する文字を取得する場合に正規表現を使えれば便利だなぁ~と調べるとやはりありました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 入力された文字列から"全角ひらがな"、"全角カタカナ"のみ取得する
- (NSString *)getHiraganaKatakana:(NSString *)inString
{   
    if ([inString length] == 0) {
        return @"";
    }
 
    // 正規表現オブジェクトを作成する
    NSRegularExpression *regexp;
    NSError *error = nil;
    regexp = [NSRegularExpression regularExpressionWithPattern:@"[ぁ-んァ-ン]" options:0 error:&error];
    if (error != nil) {
        NSLog(@"%@", error);
        return @"";
    }
 
    NSArray *checkingResultArray = [regexp matchesInString:inString options:0 range:NSMakeRange(0, inString.length)];
 
    NSMutableString *outString = [NSMutableString string];
 
    for (NSUInteger i = 0; i < [checkingResultArray count]; i++) {
        NSTextCheckingResult *checkingResult = [checkingResultArray objectAtIndex: i];
        if (checkingResult) {
            [outString appendString:[inString substringWithRange:[checkingResult rangeAtIndex:0]]];
        }
    }
 
    return outString;
}