2011-10-30 3 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); 

} 

출력 :
가 어떻게

안녕하세요을하는거야?

+0

감사합니다. setScanLocation이 문자열 길이의 범위를 벗어날 수 있습니다. 다음 체크를 추가해야합니다 :'if ([theScanner isAtEnd] == NO) ...' –

0

if 문을 사용하여 검사를 반복하는 것이 좋습니다. 당신은 문자 ":"까지 모든 것을 스캔하도록 항상 컴퓨터에 지시했지만 실제로 ":"문자 다음에 모든 것을 스캔하려고하는 것처럼 들립니다. Anne의 답변은 그러한 좋은 예를 제공합니다.

관련 문제