如何替换字符串中的$1,$2

How to replace $1 , $2 in string

本文关键字:字符串 何替换 替换      更新时间:2023-09-26
var params = ['tom' , 'harry'];
var string = 'hello $1 and $2  how aa are you $1 and $2';

What i tried

var params = ['tom' , 'harry'];
var string = 'hello $1 ,$2  how aa are you $1 , $2';
var temp;
for(var i = 0; i<params.length ; i++)
{
  temp = string.replace(/[$1]+/g,params[i]);   
}

Firefox控制台错误输出: "hello harry,harry2 how aa are you harry,harry2 "

最终输出:你好tom和harry,你们好吗tom和harry

一个解决方案:

string.replace(/'$1/g, params[0]).replace(/'$2/g,params[1])

更多的解释:

之所以把$1写成'$1,是因为$1, $2,...在正则表达式中有特殊的含义。它们被认为是特殊字符。例如,如果你想搜索.(点)在你的字符串那么你不能只是把.在regex,因为在regex .意味着匹配字符串内的任何字符(包括点太);因此,为了在字符串中找到.,您必须在regex内的点前放置(斜杠'),如'.,以便regex引擎可以找到确切的.字符。

使用SPLIT和JOIN代替-不总是需要使用 .replace

var params = ['tom' , 'harry'];
var string = 'hello $1 ,$2  how aa are you $1 , $2';
for(var i = 0; i<params.length ; i++)
{
  var st = '$' +( i + 1);
  string = string.split(st).join(params[i])
}

输出:"你好tom,harry,你好吗tom,harry "

这是一个灭绝的@muhammad imran解决方案与for循环

var params = ['tom' , 'dick', 'harry'];
var string = 'hello $1 ,$2  how $3 aa are you $1 , $2  , $3';
var stringToFire = ''
for(var i = 0 ;i<params.length;i++)
{
  var forDollar = i+ 1;
  var forReplacer =   i;
  stringToFire = stringToFire + '.replace(/''$dollarNumber/g, params[donkey])'.replace('dollarNumber',forDollar).replace('donkey',forReplacer );
}
var ultimateString = 'string'+stringToFire
eval(ultimateString);

最终输出:你好tom和harry,你们好吗tom和harry

var params = ['tom', 'harry'];
            var string = "hello $1 en $2";
            string = string.replace("$1", params[0]).replace("$2", params[1]);

要回答这个问题,如果您真的想用tom替换$1,您可以搜索'$1(注意转义的$)并替换为tom

我有一种感觉,你真正的意思是在$1$2出现的位置有一些文本。如果是这种情况,你真的不需要找到并替换;您只需要在这些位置输出变量。

我正在寻找同样的问题,这就是我最终得到的:

const params = ['tom' , 'harry'];
const string = 'hello $1 and $2  how aa are you $1 and $2';
const result = params.reduce((acc, val, i) => acc.replace(new RegExp(`''$${i+1}`, 'g'), val), string);
console.log(result);