2011-10-30 23 views
1

我有一個字符串,它看起來像:如何使用NSScanner從字符串進行掃描

#chat :hi there 

而且我想掃描所有從:爲字符串文本,因此結束像hi there

我已經試過

[[NSScanner scannerWithString:argument] scanUpToString:@":" intoString:&newarg]; 

newarg只包含#chat。這可以如何實現?

回答

4

示例串:

#chat :Hello World, 
#chat :How are you doing? 

代碼:

NSString *theString = @"#chat :Hello World,\n" 
         "#chat :How are you doing?"; 

NSScanner *theScanner = [NSScanner scannerWithString:theString]; 
NSCharacterSet *seperator = [NSCharacterSet characterSetWithCharactersInString:@":"]; 
NSCharacterSet *newLine = [NSCharacterSet newlineCharacterSet]; 
NSString *theText; 

while ([theScanner isAtEnd] == NO) { 

    [theScanner scanUpToCharactersFromSet:seperator intoString:NULL]; 
    [theScanner setScanLocation: [theScanner scanLocation]+1]; 
    [theScanner scanUpToCharactersFromSet:newLine intoString:&theText]; 

    NSLog(@"%@",theText); 

} 

輸出:

的Hello World,
你怎麼樣?

+0

謝謝! 請注意,setScanLocation可能會超出字符串長度的範圍。 你應該添加下面的檢查:'if([theScanner isAtEnd] == NO)...' –

0

考慮使用if語句遍歷掃描。你一直告訴計算機掃描一切,直到字符「:」,但它聽起來像你實際上想掃描「:」字符後面的所有內容。安妮的回答提供了一個很好的例子。