2010-06-24 5 views
0

Я создаю простое приложение iPhone FeedReader, в котором RSS-канал обрабатывается с использованием NSXMLParser. Код для анализа RSS - это стандартный код, аналогичный показанному here.NSXMLParser добавляет дополнительные символы для каждой строки

Но я заметил, что каждый анализируемый элемент имеет символы «\ n \ t \ t» в конце. Пример.

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 становится недействительным. Ex.

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

который явно дает ошибку 404.

Есть ли способ, с помощью которого я могу избавиться от лишних символов в конце каждой разобранной строки?

Спасибо.

ответ

0

Это control characters. В вашем примере есть новая строка, а затем три вкладки, возможно, для отступов. Чтобы разделить их, вы можете использовать несколько методов от NSString и NSArray.

//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:@""]; 

Когда componentsSeparatedByCharactersInSet: встречает один из управляющих символов, она представлена ​​в массиве с пустой строкой.

Для получения дополнительной информации, аналогичный вопрос был дан here, и эта точная проблема обсуждалась here, но более сложным образом.

+0

Спасибо. Это сработало. Но вместо того, чтобы присоединяться к строке назад, я просто использовал первый элемент массива brokenStrings. – Aditya

+0

Это будет работать в вашем примере, но если у вас есть такая строка, как «бананы \ n \ t в пижаме \ n \ t \ t идут по лестнице», вы получите только «бананы» вместо «бананов в пижаме» идут по лестнице ' –

+0

Очень верно. У вас есть общее решение для такого рода проблем? – Aditya

Смежные вопросы