在iOS中为HTML标记替换字符串

时间:2014-06-05 10:07:34

标签: ios regex uiwebview nsstring

我在UIWebview中解析iOS的字符串。

我有一个数据 -

<p>The post <a rel="nofollow" href="http://www.someurl.com/bikes/triumph-motorcycles-plans-sell-2700-units-2015-16/">Triumph Motorcycles Plans To Sell Over 2700 Units By 2015-16</a> appeared first on <a rel="nofollow" href="http://www.someurl.com">MotorBuzz -  Car Bike News &amp; Reviews</a>.</p>

我想要的是删除文本的超链接。我不想删除文本我只想禁用文本的超链接

因此,对于上述数据,它应该看起来像 -

 <p>The post Triumph Motorcycles Plans To Sell Over 2700 Units By 2015-16 appeared first on MotorBuzz -  Car Bike News &amp; Reviews.</p>

所以请告诉我 iOS / Objective -C 中的任何正则表达式或任何字符串替换解决方案。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用NSAttributedString。首先,将html字符串转换为NSAttributedString,然后从中获取实际字符串。

NSString *html = @"<p>The post <a rel=\"nofollow\" href=\"http://www.someurl.com/bikes/triumph-motorcycles-plans-sell-2700-units-2015-16/\">Triumph Motorcycles Plans To Sell Over 2700 Units By 2015-16</a> appeared first on <a rel=\"nofollow\" href=\"http://www.someurl.com\">MotorBuzz -  Car Bike News &amp; Reviews</a>.</p>";

   NSAttributedString *attrString = [[NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUTF8StringEncoding]
                                                                      options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                                                                NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
                                                           documentAttributes:nil error:nil];
    NSString *actualString= [attrString string];

但它将从字符串中删除所有html标签。

答案 1 :(得分:1)

幸运的是,由于你有这么简单的要求,我可以跳过整个don't use regex to parse html的事情并直接进入解决方案。

匹配这个:

<a( [^>]*?)?>|</a>

并将其替换为空,这将删除所有锚标签。