NSXMLParser добавляет дополнительные символы в каждую строку - PullRequest
0 голосов
/ 24 июня 2010

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

Но я заметил, что у каждого анализируемого элемента есть символы '\ 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 становится недействительным. Ex.

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

, что, очевидно, дает ошибку 404.

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

Спасибо.

1 Ответ

0 голосов
/ 24 июня 2010

Это управляющие символы .В вашем примере есть новая строка, а затем три вкладки, вероятно, для отступа.Чтобы удалить их, вы можете использовать несколько методов из 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: встречает один из управляющих символов, он представляется в массиве пустой строкой.

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

...