2012-05-14 12 views
10

文字列中の文字の出現を数えるにはどうすればよいですか?文字列内の文字の出現目標C

文字列:私はの出現回数を見つけたい123-456-7890

" - " 指定した文字列で

+4

繰り返し:あなたはコピーを解放していないようhttp://stackoverflow.com/questions/938095/nsstring-number-of-occurrences-of-a-character – hellslam

答えて

31

あなたは、単にこのようにそれを行うことができます。

NSString *string = @"123-456-7890"; 
int times = [[string componentsSeparatedByString:@"-"] count]-1; 

NSLog(@"Counted times: %i", times); 

出力:これは、作業を行います

Counted times: 2

+0

文字列にいくつのSPACESがあったのかを調べるのにも最適なコードです。 。 。 –

+0

文字列が ' - 'で始まる場合はどうなりますか? – Oscar

+3

@Oscarそれはまだ動作します、私はそれをテストしました。あなたはそれを自分で試しましたか? – CyberMew

1
int num = [[[myString mutableCopy] autorelease] replaceOccurrencesOfString:@"-" withString:@"X" options:NSLiteralSearch range:NSMakeRange(0, [myString length])]; 

replaceOccurrencesOfString:withString:options:range:方法行われた置換の数を返します。したがって、それを使用して何個の置換を行うことができます-はあなたの文字列にあります。

+0

は、それがメモリリークが発生することはありません? – trojanfoe

+0

@trojanfoeコースのコピーをリリースする必要がありますが、それは答えの範囲外です。 –

+1

@ H2CO3あなたはコピーへのポインタを持っていないので、このコードではできません。範囲外ですが、多くの初心者はこのコードをそのままコピーして、なぜ彼らがメモリを漏らしているのか疑問に思います。 – trojanfoe

1

あなたは、これが働いNSString

1
int total = 0; 
NSString *str = @"123-456-7890"; 
for(int i=0; i<[str length];i++) 
{ 
    unichar c = [str characterAtIndex:i]; 
    if (![[NSCharacterSet alphanumericCharacterSet] characterIsMember:c]) 
    { 
     NSLog(@"%c",c); 
     total++; 
    } 
} 
NSLog(@"%d",total); 

replaceOccurrencesOfString:withString:options:range:方法を使用することができます。それが役に立てば幸い。幸せなコーディング:)

2

int numberOfOccurences = [[theString componentsSeparatedByString:@"-"] count]; 
2

Iをこれはあなたのためにしました。これを試して。

unichar findC; 
int count = 0; 
NSString *strr = @"123-456-7890"; 

for (int i = 0; i<strr.length; i++) { 
    findC = [strr characterAtIndex:i]; 
    if (findC == '-'){ 
     count++; 
    } 
} 

NSLog(@"%d",count);