替换字符串

时间:2016-04-07 06:34:42

标签: javascript

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

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是一个已声明的变量,它已经包含文件数据信息,因此我知道该名称确实存在。

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

1 个答案:

答案 0 :(得分:2)

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

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

var formatReplaced = errorMessage.replace('{{formats}}', formatArray);
validateError(formatReplaced.replace('{{fileName}}', inputFile.name));

或链接.replace次调用(转义特殊的正则表达式字符):

validateError(errorMessage.replace(/\{\{formats\}\}/, formatArray).replace(/\{\{fileName\}\}/, inputFile.name));

我还建议给你的变量更好的名字。在阅读formatArray时,我认为它是一个数组,直到你提到它与replace函数一起工作。我推荐像userFormat这样的内容。