首页 > 编程 > JavaScript > 正文

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

2019-11-19 12:29:32
字体:
来源:转载
供稿:网友

在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容;然后就是过滤器,在微信小程序中使用还是挺多次的,在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、微信小程序中的过滤器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表