我有一个小型的网络应用,我需要在字符串中执行文本替换。但是,正常的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库可以同时执行多个搜索/替换以及字符串的副本?
答案 0 :(得分:3)
将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"
答案 1 :(得分:0)
尝试使用全局替换regexp而不是简单的字符串。简单字符串将仅替换第一个匹配的实例。
'TEXT 001.00 001.00 TEXT'.replace(/001.00/g, '001.01');
答案 2 :(得分:0)
您可以尝试将值split(' ')
放入数组中。然后使用循环修改特定元素。接下来是join(' ')
将文本重新加入字符串。