-1

正規表現を使用する必要があるプロジェクトがあるので、RegexKitLiteを使用することにし、それをダウンロードして、「ソースのコンパイル」セクションにRegexKitLite.mを追加し、 「ファイルのコピー」セクションにRegexKitLite.hを追加しました。プロジェクトライブラリにlibicucore.A.dylibを追加しました。RegexKitLite.hをクラスにインポートし、コードを記述します(テスト用):

        NSString *str = @"testing string";
        if ([str isMatchedByRegex:@"[^a-zA-Z0-9]"])
        {
            NSLog(@"Some message here");
        }

その後、エラーメッセージが表示されます。

-[__NSCFString isMatchedByRegex:]: unrecognized selector sent to instance 0x1ed45ac0
2013-02-28 19:46:20.732 TextProject[8467:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString isMatchedByRegex:]: unrecognized selector sent to instance 0x1ed45ac0'

私が逃したものは?私を助けてください..

4

1 に答える 1

1

少し掘り下げた後、iOS4より前に正規表現を使用するCocoa APIが実際にはなかったため、プログラマーは実際にiOSで使用できるRegexKitLiteなどの外部ライブラリを使用していました。

iOS4以降を使用している場合は、NSRegularExpressionを使用しない理由はありません。クラスリファレンスの説明はここにあります。

たとえばNSRegularExpression、コードスニペットは次のようになります。

NSString *str = @"testing string";   
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^a-zA-Z0-9]" options:NSRegularExpressionCaseInsensitive error:nil];
NSTextCheckingResult *match = [regex firstMatchInString:str options:0 range:NSMakeRange(0, [str length])];
NSRange range = [match rangeAtIndex:0];
if (range.location != NSNotFound)
{
    NSString* matchingString = [str substringWithRange:range];
    NSLog(@"%@", matchingString);
}
于 2013-02-28T22:38:04.217 に答える