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

react

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

  • 去除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为引入的文件模块名

&lt;wxs src="./filters.wxs" module="tool" /&gt;

&lt;text class="scoreText"&gt;{{tool.filterScore(item.shop.score)}}分&lt;/text&gt;

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

&lt;wxs module="foo"&gt;

var some_msg = "hello world";

module.exports = {

msg : some_msg,

}

&lt;/wxs&gt;

&lt;view&gt; {{foo.msg}} &lt;/view&gt;

4.react中使用

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

import noBanner from '@/assets/storeDetail/no-banner.jpg'

const filterImg = item =&gt; {

let bgImg;

if (item.shopimages == null) {

bgImg = noBanner;

} else {

bgImg = item.shopimages[0];

}

return bgImg;

};

/* 使用 */

&lt;img src={filterImg(storeitem)} className={style.topImg} alt="" /&gt;

正在努力学习中,若对你的学习有帮助,留下你的印记呗(点个赞咯^_^)

  • 往期好文推荐:

    • 判断iOS和Android及PC端
    • 纯css实现瀑布流(multi-column多列及flex布局)
    • 实现多行文字及单行的省略号
    • 微信小程序之购物车和父子组件传值及calc的注意事项

原文地址:https://segmentfault.com/a/1190000017075338

以上是 去除富文本中的html标签及vue、react、微信小程序中的过滤器 的全部内容, 来源链接: utcz.com/z/381857.html

回到顶部