gpt4 book ai didi

javascript - 替换为字符串模板,但捕获丢失的变量

转载 作者:行者123 更新时间:2023-11-28 04:59:28 26 4
gpt4 key购买 nike

我想对字符串执行变量替换(我已经排除了模板文字,因为必须稍后存储和评估字符串)。

mustache 或类似的东西看起来像是一个竞争者,但我想知道替换是否不完整。在本例中,它是为了生成 url,因此缺少部分意味着无效的 url:

在节点中测试这一点:

var Mustache  = require('mustache');
var result = Mustache.render("/someurl/{{path1}}/{{path2}}/", {path1:"my-path-to-1"})
console.log(`result:${result}:`)

这种情况发生时没有问题,但生成的 url 毫无用处,因为 Mustache 默默地用空字符串替换了丢失的 path2。我希望看到的是抛出异常(最好)或失败,这是一种简单的方法来认识到并非所有内容都被替换。

注意:模板字符串是任意的,替换对象的内容也是任意的。

输出:

result:/someurl/my-path-to-1//:

这是我正在寻找的 Python 等效项:

res = "/someurl/%(path1)s/%(path2)s/" % {"path1":"my-path-to-1"}

输出:

KeyError: 'path2'

最佳答案

我最终使用了 sprintf,它的优点是具有与 Mustache(或 Django)不同的格式,以便您可以将其嵌入到 data-url 等中:

const sprintf = require("sprintf-js").sprintf;

var o_substit = {
path1 : "mypath1"
};

var T_URL = "/someurl/%(path1)s/%(path2)s/";


console.log(`\nT_URL:${T_URL}, substitutions:`);
try {
console.dir(o_substit);
console.log("expecting a failure...")
var url = sprintf(T_URL, o_substit);
console.log(` url:${url}:`);
}
catch (e){
console.log(` exception:${e}`);
};

var o_substit = {
path1 : "mypath1"
,path2 : "mypath2"
};


console.log(`\nT_URL:${T_URL}, substitutions:`);
try{
console.dir(o_substit);
console.log("\nexpecting a success:")
var url = sprintf(T_URL, o_substit);
console.log(` url:${url}:`);
}
catch (e){
console.log(` exception:${e}`);
};

输出:

T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1' }
expecting a failure...
exception:Error: [sprintf] property 'path2' does not exist

T_URL:/someurl/%(path1)s/%(path2)s/, substitutions:
{ path1: 'mypath1', path2: 'mypath2' }

expecting a success:
url:/someurl/mypath1/mypath2/:

关于javascript - 替换为字符串模板,但捕获丢失的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263122/

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