经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » React » 查看文章
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
来源:jb51  时间:2018/11/22 9:59:20  对本文有异议

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

1.富文本去除html标签

去除html标签及 空格

  1. let richText = ' <p style="font-size: 25px;color: white">       sdaflsjf的丰富及饿哦塞尔</p><span>dsfjlie</span>';
  2. /* 去除富文本中的html标签 */
  3. /* *、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。*/
  4. let content = richText.replace(/<.+?>/g, '');
  5. console.log(content);
  6. /* 去除  */
  7. content = content.replace(/ /ig, '');
  8. console.log(content);
  9. /* 去除空格 */
  10. content = content.replace(/\s/ig, '');
  11. console.log(content);

截取字符串

  1. content = formatRichText(content);
  2. console.log(content);
  3. /* 使用substring来截取字符串 */
  4. if (content.length > 10) {
  5. content = content.substring(0, 10) + '...';
  6. }
  7. console.log(content);
  8. /* 限制字数后添加省略号 */
  9. function formatRichText(richText) {
  10. let temporaryText = '';
  11. /* 设置多长后添加省略号 */
  12. const len = 142;
  13. if (richText.length * 2 <= len) {
  14. return richText;
  15. }
  16. /* 用于记录文字内容的总长度 */
  17. let strLength = 0;
  18. for (let i = 0; i < richText.length; i++) {
  19. temporaryText = temporaryText + richText.charAt(i);
  20. /* charCodeAt()返回指定位置的字符的Unicode编码,值为128以下时一个字符占一位,当值在128以上是一个字符占两位 */
  21. if (richText.charCodeAt(i) > 128) {
  22. strLength = strLength + 2;
  23. if (strLength >= len) {
  24. return temporaryText.substring(0, temporaryText.length - 1) + "...";
  25. }
  26. } else {
  27. strLength = strLength + 1;
  28. if (strLength >= len) {
  29. return temporaryText.substring(0, temporaryText.length - 2) + "...";
  30. }
  31. }
  32. }
  33. return temporaryText;
  34. }

2.vue中使用过滤器

  1. filters: {
  2. localData(value) {
  3. let date = new Date(value * 1000);
  4. let Month = date.getMonth() + 1;
  5. let Day = date.getDate();
  6. let Y = date.getFullYear() + '年';
  7. let M = Month < 10 ? '0' + Month + '月' : Month + '月';
  8. let D = Day + 1 < 10 ? '0' + Day + '日' : Day + '日';
  9. let hours = date.getHours();
  10. let minutes = date.getMinutes();
  11. let hour = hours < 10 ? '0' + hours + ':' : hours + ':';
  12. let minute = minutes < 10 ? '0' + minutes : minutes;
  13. return Y + M + D + ' ' + hour + minute;
  14. }
  15. }
  16. /* 使用,直接在div中添加就可以了,| 前面的是参数,后面的是过滤器 */
  17. <div class="time">{{data.etime | localData}}</div>

3.微信小程序中使用过滤器

新建.wxs文件

  1. var localData = function (value) {
  2. var date = getDate(value * 1000);
  3. var Month = date.getMonth() + 1;
  4. var Day = date.getDate();
  5. var hours = date.getHours(); //计算剩余的小时
  6. var minutes = date.getMinutes(); //计算剩余的分钟
  7. var Y = date.getFullYear() + '-';
  8. var M = Month < 10 ? '0' + Month + '-' : Month + '-';
  9. var D = Day + 1 < 10 ? '0' + Day + '' : Day + '';
  10. var H = hours < 10 ? '0' + hours + ':' : hours + ':'
  11. var m = minutes < 10 ? '0' + minutes : minutes;
  12. return Y+M + D + " " + H + m;
  13. }
  14. module.exports = {
  15. localData: localData
  16. }

使用,用<wxs />标签来引入,src为路径,module为引入的文件模块名

  1. <wxs src="./filters.wxs" module="tool" />
  2. <text class="scoreText">{{tool.filterScore(item.shop.score)}}分</text>

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

  1. <wxs module="foo">
  2. var some_msg = "hello world";
  3. module.exports = {
  4. msg : some_msg,
  5. }
  6. </wxs>
  7. <view> {{foo.msg}} </view>

4.react中使用

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

  1. import noBanner from '@/assets/storeDetail/no-banner.jpg'
  2. const filterImg = item => {
  3. let bgImg;
  4. if (item.shopimages == null) {
  5. bgImg = noBanner;
  6. } else {
  7. bgImg = item.shopimages[0];
  8. }
  9. return bgImg;
  10. };
  11. /* 使用 */
  12. <img src={filterImg(storeitem)} className={style.topImg} alt="" />

总结

以上所述是小编给大家介绍的如何去除富文本中的html标签及vue、react、微信小程序中的过滤器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对w3xue网站的支持!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号