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

在获取富文本后,又只要显示部分内容,需要去除富文本标签,然后再截取其中一部分内容;然后就是过滤器,在微信小程序中使用还是挺多次的,在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为引入的文件模块名

&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;

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

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

原文地址:https://www.cnblogs.com/datiangou/p/10122821.html

时间: 2024-08-08 09:41:27

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

vue、react、微信小程序中的过滤器

一.去除html标签及空格  1 let richText = ' <p style="font-size: 25px;color: white">&nbsp; &nbsp; &nbsp; &nbsp;sdaflsjf的丰富及饿哦塞尔</p><span>dsfjlie</span>'; 2 3 /* 去除富文本中的html标签 */ 4 /* *.+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们

微信小程序中转义字符的处理

在微信小程序开发过程中,有时候会用到常用的一些特殊字符如:'<'.'>'.'&'.'空格'等,微信小程序同样支持对转义字符的处理,下面提供两种方法用来处理微信小程序中转义字符的处理. 1.官方API调用这种方式,我们直接在wxml布局文件中,直接调用相关特殊符号的转义字符会无效,原因是小程序的text文本控件的decode属性没有打开导致的,看下文档说明: 从文档中,我们可以发现,decode属性默认为false,不会解析我们的特殊字符,我们通过设置decode属性为true,并且调用

如何在微信小程序中使用字体图标

微信小程序中,在image标签里,可以在src中引用本地文件,但是background设置背景图或者使用字体图标的时候,却不能引用本地文件,只能用url地址的图片或字体,或者使用base64编码后的格式,图片我们可以在线转换,随便搜一下,有很多在线转换工具,但是使用字体图标的时候,怎么转换呢?下面我们记录一下使用图标字体的l两个方法.    方法一:将字体url转换为base64的格式后使用 第一步,下载需要的字体图: 打开阿里巴巴矢量图标库,选择自己需要的图标添加到购物车,然后点击购物车下载代

微信小程序中如何上传图片

本篇文章给大家带来的内容是关于微信小程序中如何上传图片(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一.wxml文件 <text>上传图片</text> <view> <button bindtap="uploadimg">点击选择上传图</button> </view> <image src='{{source}}' style='width:600rpx; height:6

微信小程序中target与currentTarget

如有错误,请纠出,大家一起进步!!! target在事件流的目标阶段:currentTarget在事件流的捕获,目标及冒泡阶段.但事件流处于目标阶段,target与currentTarget指向一样, 而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象.在微信小程序中也可总结为:target指向发生事件的组件,currentTarget指向绑定事件的组件. 下面请看例子: text.wxml: <view class="view1&

微信小程序中的 hover-class

微信小程序中,可以用 hover-class 属性来指定元素的点击态效果.但是在在使用中要注意,大部分组件是不支持该属性的. 目前支持 hover-class 属性的组件有三个:view.button.navigator. 不支持 hover-class 属性的组件,同时也不支持 hover-stop-propagation.hover-start-time.hover-stay-time 这三个属性. 使用方法: <view hover-class="bg_red">这是

微信小程序中的单位

vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%. vh:viewpoint height,视窗高度,1vh等于视窗高度的1%. rpx:rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素. 微信小程序也支持rem尺寸单位,rem和rpx的换算关系:rem: 规

微信小程序中获取高度及设备的方法

由于js中可以采用操纵dom的方法来获取页面元素的高度,可是在微信小程序中不能操纵dom,经过查找之后发现仅仅只有以下几个方法可以获取到高度 wx.getSystemInfoSync().windowWidth // 获取当前窗口的宽度 wx.getSystemInfoSync().windowHeight // 获取当前窗口的高度 wx.getSystemInfoSync().model // 获取当前采用的设备 wx.getSystemInfoSync().pixelRatio wx.get

微信小程序中的循环遍历问题

比如:如果在微信小程序中要遍历输出 0-9 的数,我们会使用for循环 for(var i=0;i<10;i++){ console.log(i); } 确实结果也是这样: 但是,如果我在循环时同时调用wx的api接口10次,那么输出的结果就会不同(这是产生了闭关的效应) eg:每次调用一次wx.showToast()接口,并在成功时输出循环的值. for(var i=0;i<10;i++){ wx.showToast({ title: 'haha', success:function(){