vue2实现提取字符串数字并修改数字样式(正则表达式)

如果你要在循环中提取 item.companyName 中的数字,并且希望为这些数字改变颜色和边距,可以对每个 item 进行处理。此处是一个实现示例:

复制代码
<template>  
  <div>  
    <div class="box" v-for="(item, index) in coldBaseInfo.stationModelList" :key="index">  
      <div class="boxright">  
        <div class="companyName">  
          <span v-html="formatCompanyName(item.companyName)"></span>  
        </div>  
      </div>  
    </div>  
  </div>  
</template>  

<script>  
export default {  
  props: {  
    coldBaseInfo: {  
      type: Object,  
      required: true,  
    },  
  },  
  methods: {  
    formatCompanyName(companyName) {  
      // 正则表达式提取数字  
      const numberPattern = /\d+/g;   
      // 使用 replace 生成带样式的 HTML  
      return companyName.replace(numberPattern, (match) => {  
        return `<span style="color: red; margin-left: 5px;">${match}</span>`;  
      });  
    },  
  },  
};  
</script>  

<style scoped>  
.box {  
  /* 盒子的样式 */  
}  
.boxright {  
  /* 右边内容的样式 */  
}  
.companyName {  
  /* 公司名称的样式 */  
}  
</style>  

代码解释:

  1. 模板部分

    • 通过 v-for 循环遍历 coldBaseInfo.stationModelList。每一项的 companyName 被传入 formatCompanyName 方法处理。
    • 使用 v-html 指令将处理后的结果渲染到页面中。这允许你将带有样式的HTML代码插入。
  2. 计算方法

    • formatCompanyName 方法接收 companyName,使用正则表达式 /\d+/g 提取其中的数字。
    • replace 方法用于将提取到的数字替换为一个带有样式的 <span> 标签,这里设置了红色字体和适当的左边距。
  3. 样式

    • <style> 标签内部,可以为盒子及其他元素添加合适的样式。

注意事项:

  • 请确保 companyName 中的数字不会为空。此代码仅适用于各 companyName 中含有数字的情况。
  • 使用 v-html 时要小心潜在的XSS攻击,确保传入的字符串是安全的且没有恶意代码。如果你不放心,也可以考虑其他方法,比如使用字符串拼接和 Vue 的 :style:class
相关推荐
excel13 小时前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
excel14 小时前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼16 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping16 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙17 小时前
[译] Composition in CSS
前端·css
白水清风17 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
Ticnix17 小时前
函数封装实现Echarts多表渲染/叠加渲染
前端·echarts
用户221520442780017 小时前
new、原型和原型链浅析
前端·javascript
阿星做前端17 小时前
coze源码解读: space develop 页面
前端·javascript
叫我小窝吧17 小时前
Promise 的使用
前端·javascript