2009-07-02 2 views
2

私は文字列を持っています。この文字列の複数の文字をチェックしたいのですが、以下のコードは1文字に対してうまくいきます。nsstringの複数の文字をチェックする

NSString *yourString = @"ABCCDEDRFFED"; // For example 
NSScanner *scanner = [NSScanner scannerWithString:yourString]; 

NSCharacterSet *charactersToCount = @"C" // For example 
NSString *charactersFromString; 

if (!([scanner scanCharactersFromSet:charactersToCount intoString:&charactersFromString])) { 
    // No characters found 
    NSLog(@"No characters found"); 
} 

NSInteger characterCount = [charactersFromString length]; 

答えて

5

UPDATE:NSScannerがそのように使用されるべきではない前述の例は、壊れていました。もっと簡単な例があります:

NSString* string = @"ABCCDEDRFFED"; 
NSCharacterSet* characters = [NSCharacterSet characterSetWithCharactersInString:@"ABC"]; 
NSUInteger characterCount; 

NSUInteger i; 
for (i = 0; i < [yourString length]; i++) { 
    unichar character = [yourString characterAtIndex:i]; 
    if ([characters characterIsMember:character]) characterCount++; 
} 

NSLog(@"Total characters = %d", characterCount); 
+0

文字セットに2文字以上の文字が含まれている場合、このメソッドは文字数を返すのはなぜですか? これを設定した場合: NSCharacterSet * charactersToCount = [NSCharacterSet characterSetWithCharactersInString:@ "C"]; 私はcharacterCount = 2を取得するつもりですが、代わりに「文字が見つかりません」というメッセージが表示されます。何か案は? –

+0

私は前の例を更新しました。 –

0

はNSCharacterSetで、次の方法を見てください:

+ (id)characterSetWithCharactersInString:(NSString *)aString 

あなたが作成し、そのクラスのメソッドを使用して、複数の文字(その名の文字セット)で設定した文字を作成することができますあなたのセット。パラメータは文字列であり、その文字列のすべての文字が文字セットになります。

0

また、NSCountedSetを参照してください。同じ文字の複数のインスタンスを数え続けるのに役立ちます。

countForObject:受信機で指定されたオブジェクトに関連付けられたカウントを返し ドキュメントから例えば

、。

- (NSUInteger)countForObject:(id)anObject 

パラメータ anObject 数を返すためのオブジェクト。

戻り値 受信者のanObjectに関連付けられたカウント。受信者に存在するanObjectの出現回数と考えることができます。

関連する問題