如何去除富文本中的html标签及vue、react、微信小程序中的过滤器


Posted in Javascript onNovember 21, 2018

在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容;然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过

1.富文本去除html标签

去除html标签及 空格

let richText = ' <p style="font-size: 25px;color: white">       sdaflsjf的丰富及饿哦塞尔</p><span>dsfjlie</span>';
/* 去除富文本中的html标签 */
/* *、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。*/
let content = richText.replace(/<.+?>/g, '');
console.log(content);
/* 去除  */
content = content.replace(/ /ig, '');
console.log(content);
/* 去除空格 */
content = content.replace(/\s/ig, '');
console.log(content);

截取字符串

content = formatRichText(content);
console.log(content);
/* 使用substring来截取字符串 */
if (content.length > 10) {
  content = content.substring(0, 10) + '...';
}
console.log(content);
/* 限制字数后添加省略号 */
function formatRichText(richText) {
  let temporaryText = '';
  /* 设置多长后添加省略号 */
  const len = 142;
  if (richText.length * 2 <= len) {
    return richText;
  }
  /* 用于记录文字内容的总长度 */
  let strLength = 0;
  for (let i = 0; i < richText.length; i++) {
    temporaryText = temporaryText + richText.charAt(i);
    /* charCodeAt()返回指定位置的字符的Unicode编码,值为128以下时一个字符占一位,当值在128以上是一个字符占两位 */
    if (richText.charCodeAt(i) > 128) {
      strLength = strLength + 2;
      if (strLength >= len) {
        return temporaryText.substring(0, temporaryText.length - 1) + "...";
      }
    } else {
      strLength = strLength + 1;
      if (strLength >= len) {
        return temporaryText.substring(0, temporaryText.length - 2) + "...";
      }
    }
  }
  return temporaryText;
}

2.vue中使用过滤器

filters: {
  localData(value) {
    let date = new Date(value * 1000);
    let Month = date.getMonth() + 1;
    let Day = date.getDate();
    let Y = date.getFullYear() + '年';
    let M = Month < 10 ? '0' + Month + '月' : Month + '月';
    let D = Day + 1 < 10 ? '0' + Day + '日' : Day + '日';
    let hours = date.getHours();
    let minutes = date.getMinutes();
    let hour = hours < 10 ? '0' + hours + ':' : hours + ':';
    let minute = minutes < 10 ? '0' + minutes : minutes;
    return Y + M + D + ' ' + hour + minute;
  }
}
 
/* 使用,直接在div中添加就可以了,| 前面的是参数,后面的是过滤器 */
<div class="time">{{data.etime | localData}}</div>

3.微信小程序中使用过滤器

新建.wxs文件

var localData = function (value) {
  var date = getDate(value * 1000);
  var Month = date.getMonth() + 1;
  var Day = date.getDate();
  var hours = date.getHours(); //计算剩余的小时
  var minutes = date.getMinutes(); //计算剩余的分钟
  var Y = date.getFullYear() + '-';
  var M = Month < 10 ? '0' + Month + '-' : Month + '-';
  var D = Day + 1 < 10 ? '0' + Day + '' : Day + '';
  var H = hours < 10 ? '0' + hours + ':' : hours + ':'
  var m = minutes < 10 ? '0' + minutes : minutes;
  return Y+M + D + "  " + H + m;
}
module.exports = {
  localData: localData
}

使用,用<wxs />标签来引入,src为路径,module为引入的文件模块名

<wxs src="./filters.wxs" module="tool" />
<text class="scoreText">{{tool.filterScore(item.shop.score)}}分</text>

直接在.wxml文件中用<wxs></wxs>包裹

<wxs module="foo">
var some_msg = "hello world";
module.exports = {
  msg : some_msg,
}
</wxs>
<view> {{foo.msg}} </view>

4.react中使用

react中使用,其实就是定义一个方法

import noBanner from '@/assets/storeDetail/no-banner.jpg'
const filterImg = item => {
  let bgImg;
  if (item.shopimages == null) {
    bgImg = noBanner;
  } else {
    bgImg = item.shopimages[0];
  }
  return bgImg;
};
/* 使用 */ 
<img src={filterImg(storeitem)} className={style.topImg} alt="" />

总结

以上所述是小编给大家介绍的如何去除富文本中的html标签及vue、react、微信小程序中的过滤器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 判断指定字符串是否为有效数字
May 11 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
javascript中使用new与不使用实例化对象的区别
Jun 22 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
VueJS如何引入css或者less文件的一些坑
Apr 25 Javascript
使用bootstrap插件实现模态框效果
May 10 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
JS实现点击循环切换显示内容的方法
Oct 19 Javascript
快速解决vue-cli在ie9+中无效的问题
Sep 04 Javascript
JSON生成Form表单的方法示例
Nov 21 #Javascript
apicloud拉起小程序并传递参数的方法示例
Nov 21 #Javascript
vue中组件的过渡动画及实现代码
Nov 21 #Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
Nov 21 #Javascript
Nuxt.js之自动路由原理的实现方法
Nov 21 #Javascript
nuxt.js中间件实现拦截权限判断的方法
Nov 21 #Javascript
Nuxt.js SSR与权限验证的实现
Nov 21 #Javascript
You might like
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
理解javascript定时器中的单线程
2016/02/23 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python使用KNN算法手写体识别
2018/02/01 Python
Python中str.join()简单用法示例
2018/03/20 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
Python安装whl文件过程图解
2020/02/18 Python
Python自动化操作实现图例绘制
2020/07/09 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
工程开工庆典邀请函
2014/02/01 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
模具专业自荐信
2014/05/29 职场文书
分公司经理任命书
2014/06/05 职场文书
保安2014年终工作总结
2014/12/06 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
茶花女读书笔记
2015/06/29 职场文书
《春酒》教学反思
2016/02/22 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书