[英]JavaScript String Multiple Replace
我有一個小型網絡應用程序,需要在其中執行字符串替換文本。 但是,普通的string.replace無法正常工作。 我正在修改文本的某些部分,然后需要將它們放回原始字符串中。 例如,如果我有:
var text = 'TEXT 000.99 001.00 TEXT'
我需要將這些數字中的每個數字加0.01,我得到了一個結果數組:
var new_vals = [001.00, 001.01]
然后,當我嘗試將000.99替換為001.00時,它將起作用並提供以下字符串:
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"
嘗試使用全局替換regexp代替簡單的字符串。 簡單字符串將僅替換第一個匹配的實例。
'TEXT 001.00 001.00 TEXT'.replace(/001.00/g, '001.01');
您可以嘗試split(' ')
值split(' ')
到數組中。 然后使用循環修改特定元素。 然后是join(' ')
將文本重新連接成字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.