2013-04-08 1 views
3

NSString에 문자열 사이에 여러 개의 \ n을 사용할 수 있습니다. \ n의 여러 항목을 하나의 \ n으로 바꿔야합니다. NSString 반복되는 개행을 하나의 개행으로 바꾸기

나는이 코드를 시도 :

newString = [string stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"]; 

을하지만이 원하는 결과를 제공하지 않는 경우 "\ n \ n \ n \ n \ n \ n"일련의 문자열에 발생합니다. 이 경우 "\ n \ n \ n"으로 바뀝니다.

두 개 이상의 "\ n"을 하나의 "\ n"으로 바꾸려면 어떻게해야합니까?

모두에게 감사드립니다!

업데이트 : 필터링 된 문자열이 텍스트로 설정된 UITextView의 스크린 샷을 추가합니다. 답변에 Attila H가 제안한 코드를 작성한 후 새로운 행이 하나 이상인 것으로 보입니다. enter image description here

답변

15

NSRegularExpression을 사용할 수 있습니다. 당신은 루프 내에서이 교체를 넣을 수 있습니다

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\n+" options:0 error:NULL]; 
NSString *newString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"\n"]; 
+1

참고 : NSRegularExpressionCaseInsensitive 옵션은 여기에 필요하지 않습니다. –

+0

음, 실제로. 내 대답을 편집했습니다. –

+0

도움을 주셔서 감사합니다.하지만 불행히도 새로운 라인을 추가 할 수 있습니다. 필터링 된 문자열을 UITextView로 설정합니다. UITextView에 대한 스크린 샷을 공유하고 있습니다. –

1

당신은

NSArray *arrSplit = [s componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
       s = [arrSplit componentsJoinedByString:@"\n"]; 

가 당신을 도울 수 있습니다 희망 다음과 같은 방법으로 그것을 할 수 있습니다 ..

+1

@sanijit 이걸 확인 했니? 그렇다면이 문자열을 가져옵니다. plz NSString * string = @ "Helloooooooo \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n hiiiiiii 좋은 일 \ n \ n 아주 멋진 \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n "; –

+0

@Nag_iphone이 사례를 위해 작동하지 않는다는 것을 알려 주셔서 감사합니다. 그렇다면 개행 문자 (set)의 의미는 무엇입니까? 나에게 알려 줘? 귀하의 의견을 듣기 전에 나는 잘못된 개념을 가지고있었습니다. – Exploring

-1

: 이것은 가장 간단하고 우아한 방법입니다 당신이 당신의 문자열에 "\ n \ n"창립 할 때까지.

+4

그건 내가 성능이라고 부르는 것이 아닙니다! –

+0

동의합니다 .......! – rptwsthi

관련 문제