2009-09-15 12 views
0

문자열에 두 개의 단락이 있습니다. 그러나 내용에는 단락 문자열 사이에 많은 공백이 있습니다. 큰 단락 문자열에서 공백을 제거하고 싶습니다. 내가 사용하려고 시도했다 NSString * outPutStr = [outPutStr stringByTrimmingCharactersInSet : [NSCharacterSet whitespaceCharacterSet]]; 그러나 단락 문자열에있는 빈 공간은 제거되지 않습니다. 그것은 아무것도하지 않습니다.iPhone-SDK : 단락 문자열에서 공백을 제거 하시겠습니까?

샘플을 보내 주실 수 있습니까?

감사합니다. 당신은 유지하려는 단어 사이에 하나의 공백이 같은

클레이브는/

답변

4

같은데,하지만 당신은 단락 사이에 많은 공간의 시리즈를 제거 할 수 있습니다. 이이 작업을 수행하는 여러 가지 방법이 있지만, 여기에 코드를 쉽게 하나입니다 (NSMutableString에) replaceOccurrencesOfString:withString:options:range: 방법에 대한

NSMutableString* newStr = [NSMutableString stringWithString:oldStr]; 
NSUInteger numReplacements; 
do { 
    NSRange fullRange = NSMakeRange(0, [newStr length]); 
    numReplacements = [newStr replaceOccurrencesOfString:@" " withString:@" " 
               options:0 range:fullRange]; 
} while(numReplacements > 0); 

읽기 몇 가지 세부 사항을 볼 수는.

이 방법이 가장 효율적이지는 않지만 제대로 작동하지 않으며 소수의 거대한 문자열로만 작업하는 경우 실행 속도가 중요하지 않습니다.

그런데 한 번만하면 4 개의 연속 된 공백을 2 개의 연속 공백으로 바꿀 수 있고 여러 개의 공백이 남아 있기 때문에 대체를 여러 번해야합니다.

+0

예, 내가 그렇게하고 싶다고 말했듯이, 맞습니다. 하지만 내 문자열 너무 커서, 그것은 너무 많은 공간과 4 단락이 있습니다. 내 콘텐츠 텍스트 파일을 여기에 첨부하는 방법을 모르므로 그 내용을보고 제안 할 수 있습니다. 댓글이있는 파일을 첨부 할 수 있습니까? –

+0

이 코드가 작동하면 특정 문자열을 게시 할 필요가 없습니다. 네가 원하는 방식대로 작동하지 않니? stackoverflow (어쩌면 가능하지 않은가?)에 텍스트 파일을 첨부하는 방법을 모르지만, 웹 페이지에 문자열을 게시 할 수 있다면 해당 페이지에 대한 링크를 추가 할 수 있습니다. – Tyler

0

비 공백 문자로 둘러싸인 모든 공백 문자를 '●'와 같은 문자열에 포함되지 않는 문자로 바꿉니다. (문자를 검색하여 문자를 찾을 수 있습니다. 좋은 공백 문자 다음에 유지하려는 문자를 해당 문자로 바꾼 다음 공백 문자를 모두 삭제하거나 모두 공백 문자로 바꾸십시오. , 통과 및 공백으로 • 문자를 대체

+0

코드 스 니펫을 제공해 주시겠습니까? –

5

당신이 아이폰 프로젝트에 포함 할 매우 쉽습니다 멋진 프레임 워크 RegexKitLite 사용하는 경우 :.이 언제든지 당신이 어떤 공간을 찾을 대체 말한다

NSString *cleanString = [yourStringWithWhiteSpaces stringByReplacingOccurrencesOfRegex:@" +" withString:@" "]; 

을 단일 문자로 된 1 문자보다 길다. 원본을 모르지만 단순한 문자를 사용하여 새 줄과 캐리지 리턴에 대해 동일한 작업을 수행 할 수 있습니다.

NSString *cleanerString = [cleanString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
NSString *theCleanestString = [cleanerString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; 

참고 * 코드에서이를 수행하여 1 단계로 결합하는 더 깨끗한 방법이 있지만이를 어기면 디버깅에 유용한 내용을 쉽게 이해할 수 있습니다.

0

NSString에 범주를 추가하여이 방법으로 문자열을 정규화하는 것이 좋습니다.

@implementation NSString (NormalizedString) 

-(NSString*)stringByNormalizingCharacterInSet:(NSCharacterSet*)characterSet 
            withString:(NSString*)replacement; 
{ 
    NSMutableString* result = [NSMutableString string]; 
    NSScanner* scanner [NSScanner scannerWithString:self]; 
    while (![scanner isAtEnd]) { 
    if ([scanner scanCharactersFromSet:characterSet intoString:NULL) { 
     [result appendString:replacement]; 
    } 
    NSString* stringPart = nil; 
    if ([scanner scanUpToCharactersFromSet:characterSet intoString:&stringPart]) { 
     [result appendString:stringPart]; 
    } 
    } 
    return [[result copy] autorelease]; 
} 

@end 
관련 문제