Получить текст между двумя тегами и сделать из него еще одну NSString - PullRequest
0 голосов
/ 09 октября 2011

У меня есть HTML-страница с HTML-кодом (NSString), как это:

<html>
<p>
textA
</p>
<p>
textB
</p>
</html>
<a>
textC
</a>

И я хочу получить текст между тегами

и создать еще одну строку NSString. Ожидаемый результат с этим кодом:

textAtextB

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 28 января 2013

Мне пришлось заменить

[a]text[/a]

на

<a href="text">text</a>

Вот как я это исправил:

NSString *xml = @"[a]text[/a][a]awesome[/a]"
NSString *pattern = @"\\[a\\](.*?)\\[\\/a\\]";

NSRegularExpression *regex = [NSRegularExpression
                                  regularExpressionWithPattern:pattern
                                  options:NSRegularExpressionCaseInsensitive
                                  error:nil];
for( NSTextCheckingResult *textCheckingResult in [regex matchesInString:xml options:0 range:NSMakeRange(0, xml.length)] )
{
    NSRange matchRange = [textCheckingResult rangeAtIndex:1];
    NSString *match = [xml substringWithRange:matchRange];
    htmlString = [htmlString stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"[a]%@[/a]",match] withString:[NSString stringWithFormat:@"<a href=\"%@\">%@</a>",match,match] ];
    NSLog(@"Found string '%@'", match);
}

Это будет выводить:

<a href="text">text</a>
<a href="awesome">awesome</a>
0 голосов
/ 09 октября 2011

Добавьте RegexKitLite Framework в ваш проект.

Добавьте флаг -licucore в Other Linker Flags настроек вашего проекта
Добавьте #import "RegexKitLite.h" в свой класс

Затем используйте этот фрагмент, чтобы убрать все теги:

NSString *tags = @"<[^>]*>"; 
NSString *htmlString=@"<html><p>textA</p><p>textB</p></html>";;
NSString *stringWithoutTags = [htmlString stringByReplacingOccurrencesOfRegex:tags withString:@""];
NSLog(@"%@",stringWithoutTags);
//output: textAtextB

Надеюсь, это поможет.

0 голосов
/ 09 октября 2011

Просто найдите знак <, затем следующий> и удалите деталь. Повторяйте, пока у вас не останется этих знаков. Замените регулярное выражение <*> ничем.

...