簡體   English   中英

JavaScript字符串多個替換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM