Javascript 替换字符串中的项

Javascript 替换字符串中的项,javascript,Javascript,我目前在脚本中有这个一般错误消息,我想用更具体的细节来替换它 errorMessage: "Your selected file, {{fileName}}, is not a proper format of {{formats}}" 我想用他们选择的文件名替换fileName 这就是我迄今为止所做的工作: validateError( errorMessage.replace(/{{formats}}/, formatArray) ); 所以我试了一下: validateError

我目前在脚本中有这个一般错误消息,我想用更具体的细节来替换它

errorMessage: "Your selected file, {{fileName}}, is not a proper format of {{formats}}"
我想用他们选择的文件名替换
fileName

这就是我迄今为止所做的工作:

validateError(
   errorMessage.replace(/{{formats}}/, formatArray)
);
所以我试了一下:

validateError(
       errorMessage.replace(/{{formats}}/, formatArray),
       errorMessage.replace(/{{fileName}}/, inputFile.name)
    );
当我运行此命令时,{{fileName}}以这种方式显示,并且不会被文件名替换。
inputFile
是一个已声明的变量,它已经具有文件数据信息,因此我知道名称确实存在


我做错了什么或忽略了什么?

函数的
.replace
不会改变字符串(JavaScript中的字符串是不可变的),而是返回一个新字符串。因此,您可以将结果保存到变量或链
.replace
调用。另外,由于您使用的是正则表达式,我建议转义
{
,因为它是一个特殊字符,或者只使用
字符串

保存到变量(使用字符串而不是正则表达式):

或链接
。替换
调用(转义特殊正则表达式字符):


我还建议为变量提供更好的名称。在阅读
formatArray
时,我假设它是一个数组,直到您提到它与replace函数一起工作。我建议使用
userFormat

之类的内容,比如使用
console.log(inputFile.name)时inputFile.name打印什么
?@AhmadHosny文件的实际名称。例如:starsInSky.doc-我想知道这是否与在一种方法中有两个replace语句有关。在第一次替换结束时是否缺少右括号?您是否能够使用ES6本机或通过transpiler?如果是这样,它有这样的东西@AhmadHosny否这是我键入它的错误由于某种原因,我仍然没有替换
{{fileName}
,它只是在页面上显示为
{{fileName}
我不知道会发生什么。在浏览器控制台中进行测试时,代码可以正常工作。你能用你正在使用的更多代码编辑你的帖子吗?谢谢!成功了!我的
这很奇怪,因为我构建时它没有抱怨。非常感谢!
var formatReplaced = errorMessage.replace('{{formats}}', formatArray);
validateError(formatReplaced.replace('{{fileName}}', inputFile.name));
validateError(errorMessage.replace(/\{\{formats\}\}/, formatArray).replace(/\{\{fileName\}\}/, inputFile.name));