javascript - 使用正则表达式用修改后的数字替换字符串中的数字 - Javascript

标签 javascript regex google-apps-script replace

我是 javascript 新手,所以如果我错过了一些简单的东西,我深表歉意。我正在编写一个脚本,从表格中的一个单元格中获取字符串,将 5% 的增值税添加到任何适用的数字中,然后在新单元格中输出修改后的字符串。我对正则表达式捕获我需​​要的数字感到满意,但事实证明,正确修改修改后的字符串很棘手。

到目前为止,脚本如下所示:

function strReplace() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getActiveSheet();
   var str = sheet.getRange(4,2).getValue(); // A cell with a string like this: "ID: 10101010101010 | Price 1: £4.54 | Price 2: £2.87"

   var regex = /\d{1,8}(?:\.\d{1,8})/g  // Regex to ignore numbers greater than 8 digits, including decimals

   var newStr = str.match(regex);


   for (var x = 0; x < newStr.length; x++) {

    var newRates = newStr[x]*1.05;
    var output = str.replace(newStr, newRates)

    sheet.getRange(4,3).setValue(output);

    }                   
  }  

我尝试了很多变体,但没有成功。我觉得有一种更简单的方法可以从我已经拥有的东西中实现我正在寻找的东西。任何建议将不胜感激。

谢谢!

最佳答案

要执行此类操作,您可以使用 replace 的函数回调版本:

var str = "ID: 10101010101010 | Price 1: £4.54 | Price 2: £2.87";
var regex = /\d{1,8}(?:\.\d{1,8})/g;  // Regex to ignore numbers greater than 8 digits, including decimals
var output = str.replace(regex, function(match) {
    return 1.05 * match;
});
console.log(output);

您可以选择使用 parseFloat(match) 而不仅仅是使用 match,后者依赖于 * 将字符串强制转换为数字。

您可能会考虑对结果进行 .toFixed(2) 进行舍入并格式化为两个位置(取决于您是否要按舍入方式进行舍入)。例如:

var str = "ID: 10101010101010 | Price 1: £4.54 | Price 2: £2.87";
var regex = /\d{1,8}(?:\.\d{1,8})/g;  // Regex to ignore numbers greater than 8 digits, including decimals
var output = str.replace(regex, function(match) {
    return (1.05 * match).toFixed(2);
});
console.log(output);

关于javascript - 使用正则表达式用修改后的数字替换字符串中的数字 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473935/

相关文章:

javascript - 如何为 addEventListener 创建更短的等价物

javascript - 登录文本字段和密码字段删除焦点文本

javascript - 如何缩短 Ext JS 上模型的数据绑定(bind)?

google-apps-script - 如何阻止来自活跃用户的重复电子邮件?

google-apps-script - 如何使用 Google 文档附加脚本从旧版本中 check out 代码

javascript - Soundcloud Api - 通过歌手获取轨道

javascript - 重构大型/旧 CSS 文件

java - 如何使原子组与java正则表达式中的交替一起工作?

Python 使用正则表达式分块

google-apps-script - 如何使用 Google Apps Script 或 API 判断 Google 幻灯片中的幻灯片是否为 "skipped"?