去除富文字中的html標籤及vue、react、微信小程式中的過濾器
阿新 • • 發佈:2018-12-15
在獲取富文字後,又只要顯示部分內容,需要去除富文字標籤,然後再擷取其中一部分內容;然後就是過濾器,在微信小程式中使用還是挺多次的,在vue及react中也遇到過
1.富文字去除html標籤
- 去除html標籤及 空格
let richText = ' <p style="font-size: 25px;color: white">&nbsp; &nbsp; &nbsp; &nbsp;sdaflsjf的豐富及餓哦塞爾</p><span>dsfjlie</span>'; /* 去除富文字中的html標籤 */ /* *、+限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。*/ let content = richText.replace(/<.+?>/g, ''); console.log(content); /* 去除&nbsp; */ content = content.replace(/&nbsp;/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="" />
正在努力學習中,若對你的學習有幫助,留下你的印記唄(點個贊咯^_^)
原文地址:https://segmentfault.com/a/1190000017075338