1

いくつかの文字列からすべての括弧を数えるためにいくつかのコードを作成しました、

もっと簡単な方法はありますか?

NSCharacterSet *parenthesis = [NSCharacterSet characterSetWithCharactersInString:@"()"];
parenthesis = [parenthesis invertedSet];
NSArray *arr = [someString componentsSeparatedByCharactersInSet:parenthesis];
NSInteger count = 0;
for(int i=0;i<[arr count];i++)  {
    if([[arr objectAtIndex:i] isEqualToString:@")"])
        count++;
}
NSLog(@"count is %d", count);
4

2 に答える 2

3

とにかく文字列内のすべての文字を調べる必要があるため、単純に

NSUInteger count = 0;
for (NSInteger i = someString.length - 1 ; i >= 0 ; i--) {
    unichar ch = [someString characterAtIndex:i];
    count += (ch == '(' || ch == ')');
}

これにより、使用するクラスが少なくなり、読みやすくなり、計算の実行に使用する CPU が少なくなります。

于 2013-02-05T21:08:52.393 に答える
3

救助のための正規表現

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"[()]" options:NSRegularExpressionCaseInsensitive error:NULL];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:someString options:0 range:NSMakeRange(0, [someString length])];

これはフレームワーク機能を使用します。つまり、文字列操作用に調整されているだけでなく、その操作も明確です。特定の部分文字列のみをチェックする必要がある場合は、柔軟です。他のタイプの文字をカウントする必要がある場合は、正規表現のみを変更する必要があります。

于 2013-02-05T21:10:01.517 に答える