Javascript 如何用不同的单词替换字符串中的多个相同单词

Javascript 如何用不同的单词替换字符串中的多个相同单词,javascript,replace,Javascript,Replace,我想用不同的单词替换字符串中的多个相同单词 比如说, "What is your %s name and %s name" 如果将字符串用作第一个参数来替换,则我想将第一个'%s'替换为'first',将第二个'%s'替换为'last' var s = "What is ... "; var r = s.replace("%s", "first") .replace("%s", "last"); 此处的详细信息:如果使用字符串作为第一个参数来替换,则仅替换1 var s =

我想用不同的单词替换字符串中的多个相同单词

比如说,

"What is your %s name and %s name"

如果将字符串用作第一个参数来替换,则我想将第一个
'%s'
替换为
'first'
,将第二个
'%s'
替换为
'last'

var s = "What is ... ";
var r = s.replace("%s", "first")
         .replace("%s", "last");

此处的详细信息:

如果使用字符串作为第一个参数来替换,则仅替换1

var s = "What is ... ";
var r = s.replace("%s", "first")
         .replace("%s", "last");

更多信息请点击此处:

我认为这可能更干净:

['first', 'last'].forEach(function(tag) { x = x.replace('%s', tag); })

其中x是要替换为的字符串

我认为这可能更干净:

['first', 'last'].forEach(function(tag) { x = x.replace('%s', tag); })
其中x是要替换为的字符串

您可以使用并用作替换
%s
的回调

此解决方案使用
shift
,因为如果找到要替换的项,它将为每个调用提供数组中的值。通常需要一个字符串或函数作为
replace
的第二个参数。此方案使用带有绑定数组的
shift
进行替换

返回带有绑定对象的函数

bind()
方法创建一个新函数,在调用该函数时,将其this关键字设置为提供的值,并在调用新函数时提供的任何参数之前提供一个给定的参数序列

var s=“您的%s姓名和%s姓名是什么?”,
t=s.replace(/%s/g,[].shift.bind(['first',last']);
控制台日志(t)您可以使用并用作替换
%s
的回调

此解决方案使用
shift
,因为如果找到要替换的项,它将为每个调用提供数组中的值。通常需要一个字符串或函数作为
replace
的第二个参数。此方案使用带有绑定数组的
shift
进行替换

返回带有绑定对象的函数

bind()
方法创建一个新函数,在调用该函数时,将其this关键字设置为提供的值,并在调用新函数时提供的任何参数之前提供一个给定的参数序列

var s=“您的%s姓名和%s姓名是什么?”,
t=s.replace(/%s/g,[].shift.bind(['first',last']);


控制台日志(t)
对于像OP这样的初学者,我恭敬地表示不同意。OP是在寻找答案还是教育?这怎么可能更简单呢?嗯
['first','last'].forEach(tag=>x=x.replace('%s',tag))
会更“简单”,但在跑步之前必须先走路……对于像OP这样的初学者,我很不同意。OP是在寻找答案还是教育?这怎么可能更简单呢?嗯
['first','last'].forEach(tag=>x=x.replace('%s',tag))
会更“简单”,但在跑步之前必须先走路…不是我,但你的答案可以解释一下这是如何工作的。对于初学者来说,
func.bind()
是如何工作的@约翰·斯卡尔,也许现在能更好地解释,更好。还可以提到
[].shift()
实际上是
Array.prototype.shift()
,因为
[]
是一个数组文本。我在第一行用一个链接写了它。顺便说一句,有一个类似的“胖箭头”方法:
t=s.replace(/%s/g,()=>['first',last'].shift())func.bind()
是如何工作的@约翰·斯卡尔,也许现在能更好地解释,更好。还可以提到
[].shift()
实际上是
Array.prototype.shift()
,因为
[]
是一个数组文本。我在第一行用一个链接写了它。顺便说一句,有一个类似的“胖箭头”方法:
t=s.replace(/%s/g,()=>['first',last'].shift())