有几种不同的方法可以从CocoaNSString中删除HTML tags.

One way是将字符串渲染为NSAttributedString,然后获取渲染的文本.

Another way表示使用NSXMLDocument's-objectByApplyingXSLTString方法来应用执行此操作的XSLT转换.

不幸的是,iPhone不支持NSAttributedStringNSXMLDocument.有太多的边缘 case 和格式错误的HTML个文档让我不习惯使用regex或NSScanner.有人有解决这个问题的办法吗?

一个建议是简单地寻找开始和结束标记字符,除了非常琐碎的情况外,这种方法不起作用.

例如,这些 case (来自同一主题的Perl Cookbook章节)会 destruct 此方法:

<IMG SRC = "foo.gif" ALT = "A > B">

<!-- <A comment> -->

<script>if (a<b && a>c)</script>

<![INCLUDE CDATA [ >>>>>>>>>>>> ]]>

推荐答案

A quick and "dirty" (removes everything between < and >) solution, works with 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相关问答推荐

使用音频单元播放音频流,出现爆裂声

ITMS—91053:Flutter Project中缺少API声明

如何在不将应用程序留在SwiftUI上的情况下更改语言?

如何制作支持不同语言的iOS应用

在 Swift 中,对象如何被准确地从内存中移除?

创建方案时运行 pod install 时出错

如何在 SwiftUI 中通过通用 @ObservedObject 进行切换?

Flutter iOS 构建失败:DVTCoreDeviceEnabledState_Disabled

如何在 SwiftUI 中将选项卡放在滚动视图中?

有没有办法访问自动生成的 Codable 一致性的编码键?

SwiftUI 中的偏移量和按钮有问题吗?

为什么我的应用在 Testflight 中没有下载 dSYM 按钮?

Select UITableViewCell 时 UIView backgroundColor 消失

UICollectionView - 动态单元格高度?

在 Swift 中追加字符串

如何隐藏uitabbar控制器

Xcode 4 + iOS 4.3:存档类型不存在打包程序

在 Objective-C 中将所有文本转换为小写

如何删除 Swift 数组中的所有 nil 元素?

Swift:如何在设备旋转后刷新 UICollectionView 布局