有几种不同的方法可以从 Cocoa
中的 NSString
中删除 HTML 标记
。
One way就是将字符串渲染成一个NSAttributedString
,然后抓取渲染出来的文本。
Another way是使用 NSXMLDocument's
-objectByApplyingXSLTString
方法来应用 XSLT
转换。
很遗憾,iPhone 不支持 NSAttributedString
或 NSXMLDocument
。有太多的边缘情况和格式错误的 HTML
文档让我觉得使用 regex 或 NSScanner
很舒服。有没有人可以解决这个问题?
一个建议是简单地查找开始和结束标记字符,除了非常琐碎的情况外,这种方法将不起作用。
例如,这些案例(来自 Perl Cookbook 关于同一主题的章节)会破坏此方法:
<IMG SRC = "foo.gif" ALT = "A > B">
<!-- <A comment> -->
<script>if (a<b && a>c)</script>
<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>
最佳答案
一种快速且“脏”(删除 < 和 > 之间的所有内容)的解决方案,适用于 iOS >= 3.2:
-(NSString *) stringByStrippingHTML {
NSRange r;
NSString *s = [[self copy] autorelease];
while ((r = [s rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound)
s = [s stringByReplacingCharactersInRange:r withString:@""];
return s;
}
我已将其声明为 os NSString 类别。
关于ios - 从 iPhone 上的 NSString 中删除 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277055/