gpt4 book ai didi

javascript - 字符串内的变量替换

转载 作者:行者123 更新时间:2023-11-28 14:14:16 24 4
gpt4 key购买 nike

我正在尝试编写一些非常可重用的代码,这些代码将在字符串中查找并执行变量替换。

下面的示例字符串包含对变量的 $$ 引用。格式为varname.key

我希望 subText() 函数可重用。我遇到的问题是repvars 本身可能需要替换。该代码尚未完成替换示例文本,我要求它通过调用相同的函数来替换 repvars.cr。这似乎就穿越了。我这么说是因为如果我在作品中单独做的话。

var exampleText = "A string of unlimited length with various variable substitutions included $$repvars.cr$$";
var repvars = {
cr: 'Copyright for this is $$repvars.year$$',
year: '2019'
}

function subText(text) {
var subVars = findSubs(text);
return makeSubs(text, subVars);
}

function findSubs(theText) {
var subarr = [];
while (theText.indexOf('$$') > -1) {
theText = theText.substring(theText.indexOf('$$') + 2);
subarr.push(theText.substring(0, theText.indexOf('$$')));
theText = theText.substring(theText.indexOf('$$') + 2);
}
return subarr;
}

function makeSubs(text, subs) {
for (var s = 0; s < subs.length; s++) {
var subst = getSubVal(subs[s]);
text = text.split("$$" + subs[s] + "$$").join(subst);
}
return text;
}

function getSubVal(subvar) {
var subspl = subvar.split('.');
switch (subspl[0]) {
default:
return processRepVar(subspl[1]);
}
}

function processRepVar(rvName) {
var data = getRepVarData(rvName);
if(data.indexOf('$$') > -1) {
subText(data);
} else {
return data;
}
}

function getRepVars() {
return repvars;
}

function getRepVarData(key) {
return getRepVars()[key];
}

subText(exampleText);

最佳答案

您不是在这里错过了return吗?

function processRepVar(rvName) {
var data = getRepVarData(rvName);
if(data.indexOf('$$') > -1) {
subText(data);
} else {
return data;
}
}

subText(data) 更改为 return subText(data); 使您的代码适合我。

工作中的jsfiddle:https://jsfiddle.net/uzxno754/

关于javascript - 字符串内的变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58261673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com