2009-07-02 57 views
2

我有一個字符串,我想檢查這個字符串中的多個字符下面的代碼我工作正常的一個字符如何檢查多個字符。檢查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,但是我得到:「沒有找到字符」。有任何想法嗎? – 2010-03-10 17:26:03

0

看一看在NSCharacterSet下面的方法:

+ (id)characterSetWithCharactersInString:(NSString *)aString 

您可以通過使用類方法創建一個字符與一個以上的字符(故名字符集)設置爲創建你的集合。該參數是一個字符串,該字符串中的每個字符都將以字符集結尾。

0

也查找NSCountedSet。它可以幫助您保持同一個字符的多個實例的計數。

例如,從文檔:

countForObject: 返回與接收器中的給定的對象相關聯的計數。

- (NSUInteger)countForObject:(id)anObject 

參數 anObject 的對象要返回計數。

返回值 與接收方中的anObject關聯的計數,可以認爲這是接收方中存在的對象的出現次數。