这看起来很简单,但我仍然遇到困难(我比较新)。
我有一个函数 replaceNextParameter()
,它遍历一个字符串并替换我标记为 sub1
和 sub2
的两个字符串之间的文本。一个字符串可能有 0 个、1 个或多个 sub1
和 sub2
。我希望它执行函数 replaceNextparameter
直到不再有 sub1
和 sub2
存在并返回结果。
这是我的代码:
function findAllParametersInString (string, sub1, sub2, parameterAndInputArray) {
newString = string
if (newString.indexOf(sub1) > -1 && newString.indexOf(sub2) > -1) {
newString = replaceNextParameter(sub1, sub2, newString, parameterAndInputArray);
}
return newString
};
这是它应该做什么的一个活生生的例子。
//data:
const paramsArray = [
{param: "company", input: "COMPANY"},
{param: "url", input: "URL"},
]
const sampleMessage = "BlaBlaBla {{company}} and {{url}}"
findAllParametersInString(sampleMessage,'{{', '}}', paramsArray);
//Should return "BlaBlaBla COMPANY and URL"
知道如何解决吗?目前它只返回 "BlaBlaBla COMPANY and {{url}}"
最佳答案
我建议您将 param
值用作键,将 input
值用作单个对象中的值。像这样:
var params = {
company: "COMPANY",
url: "URL"
};
现在使用这个简单的函数:
var sampleMessage = "BlaBlaBla {{company}} and {{url}}";
function replace(str, map) {
for (var key in map) {
str = str.split('{{' + key + '}}').join(map[key]);
}
return str;
}
replace(sampleMessage, params); // -> "BlaBlaBla COMPANY and URL"
您可以在 replace
函数中使用 {{
和 }}
的参数
关于javascript - JS - 让功能重复直到满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778031/