jsonnet 中的多字符替换函数
function for multi char replacement in jsonnet
如何替换字符串中的多个字符?
我目前的策略是嵌套 stdlib
函数:
tst.jsonnet:
local tst = '0-1.2';
{
tst: std.strReplace(std.strReplace(tst, '.', '_'), '-', '_'),
}
输出:
> ./jsonnet tst.jsonnet
{
"tst": "0_1_2"
}
我希望能够使用该功能,例如:
std_name(tst, ['.', '-'], '_')
不幸的是 jsonnet
doesn't support regex(这对这个 use-case 有很大帮助),不过你可以编写自己的函数来实现你的 std_name()
(我将它命名为 strReplaceMany()
在下面的代码中):
local tst = '0-1.2';
// Loop over fromArray (of strings), running std.stdReplace()
local strReplaceMany(str, fromArray, to) = std.foldl(
function(retStr, from) std.strReplace(retStr, from, to),
fromArray,
str
);
{
tst: strReplaceMany(tst, ['.', '-'], '_'),
}
如何替换字符串中的多个字符?
我目前的策略是嵌套 stdlib
函数:
tst.jsonnet:
local tst = '0-1.2';
{
tst: std.strReplace(std.strReplace(tst, '.', '_'), '-', '_'),
}
输出:
> ./jsonnet tst.jsonnet
{
"tst": "0_1_2"
}
我希望能够使用该功能,例如:
std_name(tst, ['.', '-'], '_')
不幸的是 jsonnet
doesn't support regex(这对这个 use-case 有很大帮助),不过你可以编写自己的函数来实现你的 std_name()
(我将它命名为 strReplaceMany()
在下面的代码中):
local tst = '0-1.2';
// Loop over fromArray (of strings), running std.stdReplace()
local strReplaceMany(str, fromArray, to) = std.foldl(
function(retStr, from) std.strReplace(retStr, from, to),
fromArray,
str
);
{
tst: strReplaceMany(tst, ['.', '-'], '_'),
}