2012-05-14 28 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:方法返回已完成的替換次數,所以我們可以使用它來計算出多少次- s在你的字符串中。

+0

不導致內存泄漏,你不釋放副本? – trojanfoe

+0

@trojanfoe你必須發佈當然的副本,但它不在答案的範圍內。 – 2012-05-14 13:34:02

+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

我爲你做了這個。嘗試這個。

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