如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
程序员文章站
2022-05-29 18:13:49
在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容;然后就是过滤器,在微信小程序中使用还是挺多次的,在vue及react中也遇到过
1.富文...
在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容;然后就是过滤器,在微信小程序中使用还是挺多次的,在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、微信小程序中的过滤器,希望对大家有所帮助