這是一種可以接受的方式來查找子字符串出現次數嗎?它可以變得更有效率嗎?並且應該使用什麼編碼從NSString
轉換爲c字符串?字符串中子字符串出現次數
我對while語句中的()!=NULL
不是100%確定,它似乎工作正常,並且當沒有發現更多事件時,它確實會中止while循環。
- (NSUInteger)occurenceOfString:(NSString *)substring {
const char *substr = [substring cStringUsingEncoding:NSUTF8StringEncoding];
const char *selfstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
unsigned long substrlen = strlen(substr);
NSUInteger count = 0;
char * ptr;
while ((ptr = strstr(selfstr, substr)) != NULL && substr != '\0') {
count++;
substr += substrlen + *ptr;
}
return count;
}
(這是一種分類方法,所以自己搜索的字符串)。
這類似於http://stackoverflow.com/questions/2166809/number-of-occurrences-of-a-substring-in-an-nsstring NSUTF8StringEncoding是正確的編碼。 – Jano