在两个标签之间获取文本,并从中生成另一个NSString

时间:2011-10-09 12:26:17

标签: iphone html objective-c nsstring asihttprequest

我有html代码(NSString)的html页面,如下所示:

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

我希望在标签之间获取文本

并制作另一个NSString。 此代码的预期结果是:

  

textAtextB

非常感谢。

3 个答案:

答案 0 :(得分:1)

我不得不替换

[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>

答案 1 :(得分:0)

只需搜索&lt;签名,然后为下一个&gt;签名,并删除该部分。重复,直到你没有留下这些标志。 替换正则表达式&lt; *&gt;什么都没有。

答案 2 :(得分:0)

RegexKitLite框架添加到您的项目中。

将标记-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

希望这有帮助。