2012-05-14 2 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

@ 오스칼 그것은 여전히 ​​작동합니다, 방금 테스트했습니다. 너 혼자 해봤 니? – CyberMew

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

replaceOccurrencesOfString:withString:options:range: 방법 만들어진 대체물의 수를 반환합니다. 그래서 이것을 사용하여 얼마나 많은 숫자를 찾을 수 있습니까 - s 귀하의 문자열에 있습니다.

+0

는 메모리 누수가 발생하지 않습니다 ? – trojanfoe

+0

@trojanfoe 물론 사본을 릴리스해야하지만 이는 답변 범위를 벗어납니다. –

+1

@ H2CO3 복사에 대한 포인터가 없으므로이 코드로는 불가능합니다. 범위를 벗어났습니다. 예를 들어 많은 초보자가이 코드를 그대로 복사 한 다음 왜 메모리 누수인지 궁금해합니다. – trojanfoe

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);