2010-06-24 8 views
0

RSS 피드가 NSXMLParser를 사용하여 구문 분석되는 간단한 FeedReader iPhone 앱을 만듭니다. RSS 구문 분석 코드는 here과 비슷한 표준 코드입니다.NSXMLParser는 모든 문자열에 추가 문자를 추가합니다.

하지만 모든 파싱 된 요소의 끝에 '\ n \ t \ t'문자가 있음을 발견했습니다. Ex.

link = "http://bakery.cakephp.org/articles/view/exporting-data-to-csv-the-cakephp-way\n\t\t\t"; 
date = "Fri, 23 Apr 2010 10:02:55 -0500\n\t\t\t"; 

이 때문에 NSWebView에 피드를 제공하는 링크를 사용할 수 없으며 잘못된 문자가 있습니다. 같은 것을 사용해도

NSString *storyURL = [NSString stringWithFormat:@"%@", self.selectedURL]; 
NSString *webURL = [storyURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

URL이 무효화됩니다. 전의.

http://bakery.cakephp.org/articles/view/creating-pdf-files-with-cakephp-and-tcpdf%0A%09%09%09 

이것은 분명히 404 오류를 제공합니다.

모든 구문 분석 된 문자열 끝에 추가 문자를 제거 할 수있는 방법이 있습니까?

감사합니다.

답변

0

이들은 control characters입니다. 귀하의 예제에서 개행이 있고 들여 쓰기를위한 세 개의 탭이 있습니다. 그들을 제거하려면 NSStringNSArray에서 몇 가지 방법을 사용할 수 있습니다. componentsSeparatedByCharactersInSet: 만남 제어 문자 중 하나는,이 빈 문자열 배열로 표현되어

//This breaks the given string apart at the control characters 
//This will find all of the control characters in the string 
NSArray *brokenStrings = [dirtyString componentsSeparatedByCharactersInSet:[NSCharacterSet controlCharacterSet]]; 
//Now join them back together 
NSString *cleanString = [brokenStrings componentsJoinedByString:@""]; 

.

자세한 내용은 here과 유사한 질문이 있었고,이 정확한 문제는 더 복잡한 방식으로 here으로 논의되었습니다.

+0

감사합니다. 그게 효과가 있었어. 하지만 문자열을 다시 결합하는 대신 brokenString 배열의 첫 번째 요소를 사용했습니다. – Aditya

+0

당신의 예제에서 작동 하겠지만, '바나나 \ n \ t 파자마 \ n \ t \ t'와 같은 문자열을 계단을 걸어 오면 '파자마 바나나'대신 '바나나'가 나타납니다. 계단을 걷고있다. ' –

+0

매우 사실. 이런 종류의 문제에 대한 일반적인 해결책이 있습니까? – Aditya

관련 문제