javascript - 用于仅匹配和替换 excel 公式字符串中的列号数字的正则表达式
问题描述
我需要从 excel 公式字符串中替换 columnNumber 数字。
我尝试编写一个正则表达式(/[A-Z]\d+/g)
来从公式字符串中获取带有数字的 columnNumber,这似乎无法正常工作,因为它只是检测 columnNumber (E2~D2) 而不是仅替换该 columnNumber-digit 的数字,它正在替换整个 columnNumber。
var formula = "=IF(E2<(D2*0.004),100,IF((100-(((E2-(D2*0.004))/(D2*0.004))*100))<0,0,(100-(((E2-(D2*0.004))/(D2*0.004))*100))))";
var regex = /[A-Z]\d+/g;
for(var i=2; i<=3; i++)
console.log(formula.replace(regex,i)
我需要这个
/**
=IF(E2<(D2*0.004),100,IF((100-(((E2-(D2*0.004))/(D2*0.004))*100))<0,0,(100-(((E2-(D2*0.004))/(D2*0.004))*100))))
=IF(E3<(D3*0.004),100,IF((100-(((E3-(D3*0.004))/(D3*0.004))*100))<0,0,(100-(((E3-(D3*0.004))/(D3*0.004))*100))))
**/
但是得到这个
/**
=IF(2<(2*0.004),100,IF((100-(((2-(2*0.004))/(2*0.004))*100))<0,0,(100-(((2-(2*0.004))/(2*0.004))*100))))
=IF(3<(3*0.004),100,IF((100-(((3-(3*0.004))/(3*0.004))*100))<0,0,(100-(((3-(3*0.004))/(3*0.004))*100))))
**/
解决方案
我不太确定,是否要替换 [AZ] 之后的数字。如果是这种情况,这可能会帮助您这样做:
var formula = "=IF(E2<(D2*0.004),100,IF((100-(((E2-(D2*0.004))/(D2*0.004))*100))<0,0,(100-(((E2-(D2*0.004))/(D2*0.004))*100))))";
var regex = /([A-Z])\d+/g;
for(var i=2; i<=3; i++){
console.log(formula.replace(regex,'\$1'+i));
}
正则表达式演示
此图显示了表达式的工作方式:
推荐阅读
- java - 在 Selenium Java 客户端中 addArguments 和 setPreference 方法有什么区别?
- powerbi - 有异常的索引列 - POWER BI / DAX / M
- python - 计算 Python 列表中重复的元素总数
- android - Android WebView:等待显示更新,直到页面渲染完成
- c# - 如何在winforms图表中拥有相同大小的列?
- flutter - Flutter Navigator 2.0 通过 Navigator() 路由
- plot - 用 plot_implicit 绘制两个隐式函数
- python - 如何在熊猫 groupby 之后跨列求和?
- php - 如何从录制状态回调中获取 From 和 To 号码
- amazon-web-services - 使用 S3 全球域名的 CloudFront 来源是否比区域域名表现更好?