gpt4 book ai didi

string - JavaScript 字符串多次替换

转载 作者:行者123 更新时间:2023-11-30 13:29:54 25 4
gpt4 key购买 nike

我有一个小型网络应用程序,我需要在其中执行字符串中的文本替换。但是,普通的 string.replace 将不起作用。我正在修改部分文本,然后我需要将它们放回原始字符串中。例如,如果我有:

var text = 'TEXT 000.99 001.00 TEXT'

我需要为这些数字中的每一个加上 0.01,我有一个结果数组:

var new_vals = [001.00, 001.01]

然后,当我尝试用 001.00 替换 000.99 时,它会起作用并给我以下字符串:

text = 'TEXT 001.00 001.00 TEXT'

现在我遇到了问题。下一个替换应该是 001.00 <- 001.01,但这样做会导致:

text = 'TEXT 001.01 001.00 TEXT'

我的问题是,您是否知道任何提供替换功能的 JS 库可以同时对字符串的副本执行多个搜索/替换?

最佳答案

使用str.replace有一个功能:

var text = 'TEXT 000.99 001.00 TEXT';
var new_vals = ["001.00", "001.01"];
var index = 0;
//Returns a new result string
var result = text.replace(/\b([\d.]+)\b/g, function(substr, num, offset, str){
//See if the number is actually a number
var num = parseFloat(num);
//If not, return original
if(isNaN(num))
return substr;
//Return the number from new_vals and increment the index
else
return new_vals[index++];
});
//result == "TEXT 001.00 001.01 TEXT"

或者,您可以在函数中添加:

var text = 'TEXT 000.99 001.00 TEXT';
//Returns a new result string
var result = text.replace(/\b([\d.]+)\b/g, function(substr, num, offset, str){
//See if the number is actually a number
var num = parseFloat(num);
//If not, return original
if(isNaN(num))
return substr;
//Return num+0.01 with 2 decimal places
else
return (num+0.01).toFixed(2);
});
//result == "TEXT 1.00 1.01 TEXT"

关于string - JavaScript 字符串多次替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7131716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com