在一些web应用中,如新闻、日志等需要在其列表中提供摘要信息,有些CMS系统中提供了摘要字段,在新闻发布时手动填写,但更为便捷的方式是直接截取内容的前面一段作为摘要信息。如果内容为纯字符型,不带任何格式,那便好办,直接取其前n个字符即可,但如果内容为html代码,且不一定能保证html代码一定符合规范,那便如何是好?

首先,不能直接截取,因为你可能会失去截取内容中已有标记的闭合标记,这样的摘要放在列表中会造成整个页面的html闭合失常

其次,前N个字符有可能全部是html标记,并非实际内容

再者,如果截断位置遇到img input等自闭合标签,需延长至其闭合的位置再截断

总的来说,不能贸然行事,需要探查敌情,敌情就在于,普通截取字符串实际截取位置和实际截取长度为同一个值,但html内容的截取位置大于或等于截取长度,截取长度应只考虑纯文本内容,而截取位置应将容纳了截取长度内纯文本的html标签字符数也计算在内,于是,有了如下方案:

定义截取长度、截取的子字符串
在截取长度>0的情况下,循环遍历html字符:
    如果当前字符不处于标签中: #纯内容文本
        截取长度--
    截取的子字符串 += 当前字符 #拼积截取字符串

返回截取的子字符串

更多相关文章

  1. 如果字符串包含html代码,如何用python检测?
  2. htmlhref属性最大支持多少个字符???(高分)
  3. HTML H5之ASCII 代码转义字符集实体编号
  4. 如何使用Java浏览和显示XML内容
  5. jquery将html转换为字符串和html
  6. 当内容宽度为自动时,隐藏滚动条(仍然能够滚动)不起作用
  7. js去除字符串中所有html标签及 符号
  8. 用JAVA从HTML标记中撕下子字符串
  9. jQuery scale div内容(嵌套div)

随机推荐

  1. android从程序员到架构师之路----高焕堂
  2. Android单线程模型相关概念详解
  3. android游戏开发(三)触屏事件处理_手势识
  4. Android中的MVP架构初探
  5. Android中Intent,service,broadcast应用浅
  6. 为什么 Android 截屏需要 root 权限
  7. android——Include进来的GridView无法显
  8. Android事件分发与消费
  9. 使用Android(安卓)Memory Profiler
  10. 有关Android线程的学习