2013-04-26 3 views
0

나는 절대적으로 제로 행 구분하고 불필요한 공백이나 탭, 다른 단어 후, 한 단어를 웹 사이트에서 일부 텍스트를 당기고있는 NSString에 저장하고, 다시 사용자에게 표시,하지만 난 하나 개의 명확한 라인에서 원하는 .문자열에서 불필요한 공백을 모두 제거하려면 어떻게합니까?

는 다음과 같은 이미지를 가지고 :

enter image description here

몸은 내가 원하는하지 않는 것이 그 안에 모든 간격을 가지고있다. 나는 단어들 사이에 공백을 원한다. (그래서 나는 "This is a sentence", "Thisisasentence"가 아니다.) 그러나 그 간격은 실제로 출력을 추악하게 만든다. 어떻게 제거합니까?

답변

5

정규 표현식은 여기에 많은 도움이 :

NSString *tooManySpaces = @" Too\tmany spaces \n and on several \nlines, at that"; 
NSString *cleaned = [tooManySpaces stringByReplacingOccurrencesOfString: @"\\s+" 
                  withString: @" " 
                   options: NSRegularExpressionSearch 
                    range: NSMakeRange(0, tooManySpaces.length)]; 

\s 패턴이 공백, 즉 공백, 탭 및 줄 바꿈을 포함한다. 너무 많으면 공간과 탭 문자를 포함하여 [ \t]+과 같이 필요한 것을 지정할 수 있습니다. *`NSRegularExpression을 : 나는 이미이

cleaned = [cleaned stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
+0

단어 사이에 공백을 제거하지 않겠습니까? –

+0

@DougSmith 정확히 무엇을 의미하는지 확신 할 수 없으므로 공백 시퀀스를 하나의 단일 공백으로 줄입니다. 즉 공백이있는 모든 단어 사이에 공백이 하나만 남습니다. 그것이 내가 당신의 질문을 읽는 방법이었습니다. 시퀀스가 1 바이트 문자열로 바뀝니다. – Monolo

+0

그 방법을 잊어 버렸습니다. 이것은 내 방식보다 훨씬 쉽습니다. 비록 여러 문자열을 처리해야한다면 내 솔루션이 훨씬 효율적입니다. – rmaddy

0

@" " (공간)와 패턴 @" +" (우주 공간 플러스)를 대체 할 정규 표현식을 사용합니다. 즉

,이 하나의 공간을 두 개 이상의 공간의 모든 항목을 대체합니다.

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@" +" options:0 error:&error]; 
NSString *someString = ...; // some string with lots of spaces 
NSString *newString = [regex stringByReplacingMatchesInString:someString options:0 range:NSMakeRange(0, someString.length) withTemplate:@" "]; 
+0

: 시작과 끝에서 초과 공백을 제거하기 위해

은 또한 (전이나 정규식 대체를 적용 이후에) 문자열을 손질 할 필요가 regex = [NSRegularExpression regularExpressionWithPattern : @ "(<. *? > | \\ n | \\ t | &.*?;)"그러나 그것을 잡는 것 같지 않습니다. (모든 HTML 서식도 제거합니다.) –

+0

그건 완전히 다른 문제입니다. 여분의 공백을 제거하는 것에 관한 질문입니다. 이제는 문제를 일으키는 다른 정규 표현식에 대해 이야기합니다. – rmaddy

관련 문제