8

文字列内のn個の特殊文字の出現回数を一致させる必要があります。
これらすべての文字(20以上)を使用して配列を作成し、それぞれに一致する関数を作成することを考えました。
文字列に含まれる特殊文字の合計数だけなので、数学でそれらを当てにすることができます。

したがって、例では:

NSString *myString = @"My string #full# of speci@l ch@rs & symbols";
NSArray *myArray = [NSArray arrayWithObjects:@"#",@"@",@"&",nil];

関数は5を返す必要があります。

配列にない文字を一致させ、文字列の長さを取得して、元の文字列と特別な文字がない文字列の差を出力する方が簡単でしょうか?
これが最善の解決策ですか?

4

3 に答える 3

10
NSString *myString = @"My string #full# of speci@l ch@rs & symbols";

  //even in first continuous special letters it contains -it will return 8

//NSString *myString = @"#&#My string #full# of speci@l ch@rs & symbols";



NSArray *arr=[myString componentsSeparatedByCharactersInSet:[NSMutableCharacterSet characterSetWithCharactersInString:@"#@&"]];

NSLog(@"resulted string : %@ \n\n",arr);

NSLog(@"count of special characters : %i \n\n",[arr count]-1);

出力:

結果の文字列:(

"My string ",

full,

" of speci",

"l ch",

"rs ",

" symbols"

)。

count of special characters : 5 
于 2011-07-29T16:35:01.383 に答える
2

シナリオに最適なNSRegularExpressionを利用する必要があります。次のように作成できます。

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(#|&)" options:NSRegularExpressionCaseInsensitive error:&error];

NSUInteger numberOfMatches = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])];

警告:AppleDeveloperサイトからコードをリッピングしました。そして、私は正規表現の第一人者ではないので、パターンを微調整する必要があります。しかし、要点はわかります。

于 2011-07-29T16:21:13.137 に答える
1

あなたも見てくださいNSRegularExpression

- (NSUInteger)numberOfCharacters:(NSArray *)arr inString:(NSString *)str {
    NSMutableString *mutStr = @"(";
    for(i = 0; i < [arr count]; i++) {
        [mutStr appendString:[arr objectAtIndex:i]];
        if(i+1 < [arr count]) [mutStr appendString:@"|"];
    }
    [mutStr appendString:@")"];
    NSRegularExpression *regEx = [NSRegularExpression regularExpressionWithPattern:mutStr options:NSRegularExpressionCaseInsensitive error:nil];
    NSUInteger *occur = [regExnumberOfMatchesInString:str options:0 range:NSMakeRange(0, [string length])];
    [mutStr release];
    return occur;
}

使用例:

NSString *myString = @"My string #full# of speci@l ch@rs & symbols";
NSArray *myArray = [NSArray arrayWithObjects:@"#",@"@",@"&",nil];
NSLog(@"%d",[self numberOfCharacters:myArray inString:myString]); // will print 5
于 2011-07-29T16:36:25.580 に答える