Преобразовать форматированную текстовую строку HTML в части NSString - PullRequest
13 голосов
/ 16 ноября 2011

Я хочу декодировать строку HTML и сохранить ее в NSString.

Ниже приводится строка html для одного из ответов от API направления Google.

teststring is Turn <b>right</b> onto <b>Kennington Park Rd/A3</b><div style="font-size:0.9em">Continue to follow A3</div><div style="font-size:0.9em">Entering toll zone in 1.7&nbsp;km at Newington Causeway/A3</div><div style="font-size:0.9em">Go through 2 roundabouts</div>

Я хочу сохранить этоHTML-строка в массиве из 4 различных NSStrings со следующими 4 NSStrings (удаление всей информации для размера цвета)

Turn right onto Kennington Park Rd/A3
Continue to follow A3
Entering toll zone in 1.7 km at Newington Causeway/A3
Go through 2 roundabouts

Я использовал следующий метод для преобразования html-строки в простой текст.stringByConvertingHTMLToPlainText - это метод, определенный в файле пользовательского класса)

testString = (NSString*) [html_response stringByConvertingHTMLToPlainText];
NSLog(@"%@",testString);

, но он преобразует всю строку, а не разбивает ее на части.вывод на консоль

Turn right onto Kennington Park Rd/A3Continue to follow A3 Entering toll zone in 1.7 km at Newington Causeway/A3 Go through 2 roundabouts

Так что мне нужно написать собственный метод для этого?Любая помощь будет принята с благодарностью.

1 Ответ

18 голосов
/ 16 ноября 2011

Есть очень хорошая NSString категория , которую вы можете использовать, это часть проекта MWFeedParser . В частности, вы ищете файл NSString + HTML .

Категория NSString + HTML добавляет следующие методы в класс NSString,

- (NSString *)stringByStrippingTags;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;

Затем вы можете попробовать что-то вроде:

NSString *summary = [[[htmlString stringByStrippingTags] stringByRemovingNewLinesAndWhitespace] stringByDecodingHTMLEntities];

Надеюсь, это поможет !, удачи:)

...