iOS 去掉html标签 留下原本的字符串

做开发有的时候会遇到服务器返回的数据是html的,我们可以选择直接用webview来加载的方式去处理,当然这个方法不适用所有场景,通常我们会选择把没有必要的html标签去掉留下需要的文字信息,现在一起来看看吧。

首先提供一个html标签的字符串

   NSString *html = @"<p><span style=\"font-family:宋体\">劳动是人类创造物质或精神财富的活动,有体力的,也有脑力的。我们自己是劳动者,也是别人劳动的见证者。劳动存在于现在,也存在于过去和未来。劳动的人有不同,劳动的对象有不同,劳动的方式有不同,劳动的环境有不同</span>……<span style=\"font-family:宋体\">于是,劳动的滋味也有不同。劳动很重要,品味劳动的滋味也很重要。你对劳动有怎样的体验或感悟?请以</span>“<span style=\"font-family:宋体\">品味劳动</span>”<span style=\"font-family:宋体\">为题写一篇不少于</span>800<span style=\"font-family:宋体\">字的作文,除诗歌外文体不限。</span></p><p><br/></p>";

然后提供一个方法

-(NSString *)filterHTML:(NSString *)html
{
    NSScanner * scanner = [NSScanner scannerWithString:html];
    NSString * text = nil;
    while([scanner isAtEnd]==NO)
    {
        [scanner scanUpToString:@"<" intoString:nil];
        [scanner scanUpToString:@">" intoString:&text];
        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",text] withString:@""];
    }
    return html;
}

执行完毕后会得到需要的 信息,而没有出现html标签。

这样就结束了一点意义没有,那么现在让我们一起来看NSScanner的用法吧。

NSScanner是一个类,用于在字符串中扫描指定的字符,翻译成我们需要的字符串或者数字,核心就是位置的移动 即scanLocation的移动变化

在上面的方法中首先指明了要扫描的对象 html(NSString) NSString * text 很重要 把我们要扫描出来的字符串存到text里面

而这个扫描到的字符串就是>之前的字符串 scanUpToString这个方法的意思是将scanLocation停留在>之前 并把之前的字符串传给text。

回头来看看我们去除html标签的方法 整个过程都是在扫描过程中进行的NSScanner在执行scanUpToString这个方法时一旦扫描到需要的字符串比如例子中的“<”,其scanLocation就会变为html的初始位置。所以,要在执行完一次完整的扫描后 把html标签用空字符串替换掉,在进行下一次扫描,也就是说再while中 html字符串的标签字符会越来越少,而每次扫描的初始位置相对没有变化都停留在上一次扫描结束的位置,即"<"标签的前面。

有关NSScanner的更好的介绍 参考链接http://blog.csdn.net/likendsl/article/details/7974761

时间: 2024-10-17 14:17:59

iOS 去掉html标签 留下原本的字符串的相关文章

IOS 去掉代码html中的标签元素,获得纯文本

content是根据网址获得的网页源码字符串    NSRegularExpression *regularExpretion=[NSRegularExpression regularExpressionWithPattern:@"<[^>]*>|\n"  options:0  error:nil]; //替换所有html和换行匹配元素为"-"        content=[regularExpretion stringByReplacingMa

猫猫学iOS之去除服务器返回数据中的html标签,去除指定字符串,替换字符串

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:问题 如图中,服务器返回的数据里面有大串的html 但是我们只用字符串,由于不想麻烦后台修改数据....(喵很为别人着想)于是自己想办法解决. 其实解决的方法很多很多..比如用字符串的截取方法的到range,然后根据位置来得到里面的想要的东东..嘎的,想想都崩溃. 还有呢用正则表达式等等...正则表达式,说实话这东西除了面试时候说说和学习时候用过做项目还从来

strip_tags去掉HTML标签失败

现在有这样一个需求: 编辑器里面可以插入图片,添加新闻的内容,现在要从新闻的内容中截取一部分的文字,作为该篇新闻的描述,怎样做简单? 思路: 先用strip_tags函数去掉HTML标签,然后用 msubstr(这个函数不是TP自带的,需要手动加上)函数截取字符串 问题: strip_tags函数去掉HTML标签,失败 解决办法: 先用htmlspecialchars_decode($news_content)把一些预定义的 HTML 实体转换为字符,然后msubstr($str) $news_

python去掉html标签

s = '<SPAN style="FONT- SIZE: 9pt">开始1~3<SPAN lang=EN-US>& lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN>' import re d = re.sub('<[^

PHP中去掉HTML标签

 平时用我们使用htmlspecialchars() 来过滤html, 但是把html的字符转义了,最后显示出来的就是html源代码. 利用strip_tags()就可以把html标签去除掉. <?php $str = '<a href="#">href</a>'; //echo htmlspecialchars($str); echo strip_tags($str); ?> 很多网站首页都有一片文章的一小部分.在这里就要使用strip_tag

Struts标签&lt;s:if&gt;判断字符串是否包含一个固定的值

Struts标签<s:if>判断字符串是否包含一个固定的值:1.如果比较对象是字符串: 1 <s:if test="str.contains('判断是否包含的字符串')" > 2 包含 3 </s:if> 4 <s:else> 5 不包含 6 </s:else> 2.如果比较对象是某个对象的属性: 1 <s:if test="(notice.title).contains('通知')"> 2 &

去掉a标签超链接的虚线框的方法

去掉a标签超链接的虚线框的方法,需要的朋友可以参考下. a{ blr:expression(this.onFocus=this.blur()); /* IE Opera */ outline:none; /* FF Opera */ } a:focus{ -moz-outline-style: none; /* FF */ } 全 局控制 CSS实现 a{blr:expression(this.onFocus=this.close());} /* 只支持IE,过多使用效率低 */ a{blr:e

iOS开发中标签控制器的使用——UITabBarController

正文 iOS开发中标签控制器的使用——UITabBarController 一.引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController进行管理. 二.创建一个标签控制器 通过如下的步骤,我们可以很简便的创建一个TabBarCo

iOS 去掉导航栏的边界黑线&amp;去掉搜索框的边界黑线和其中文本输入框的阴影 - 解决方案

去掉导航栏的边界黑线 in viewDidload: [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 去掉搜索框的边界黑线 in viewDidload: