gpt4 book ai didi

javascript - 修改格式模式以替换字符串中的占位符

转载 作者:行者123 更新时间:2023-12-02 14:48:19 27 4
gpt4 key购买 nike

我目前编写了一个简单的格式化函数来替换字符串中的一些占位符。

var format = function (a, c) {
return a.replace(/{ *([^} ]+) *}/g, function (b, a) {
b = c;
a.replace(/[^.|\[\]]+/g, function (a) {
b = b[a];
});
return b;
});
};

语法当前使用大括号符号 {key},我现在尝试修改RegExp-模式以使用百分之一而是 %key

var pattern = /{ *([^} ]+) *}/g;

我尝试将括号 {} 替换为百分号 %,但这仍然无法正常工作。

var pattern = /% *([^% ]+) */g;

原始模式适用,符合预期的以下条件:

var data = {
obj: {
foo: 'Foo',
bar: 'Bar'
},
arr: ['Foo', 'Bar']
};

var objTest = '{obj.foo}, is not equal to {obj.bar}.'
format(objTest, data) // => 'Foo, is not equal to Bar.'

var arrTest = '{arr[0]}, is not equal to {arr[1]}.'
format(arrTest, data) // => 'Foo, is not equal to Bar.'

如果我们使用我修改后的模式,似乎每个占位符替换后的最后一个字符将被删除:

'%obj.foo, is not equal to %obj.bar.' // => 'undefined is not equal to Bar'
'%arr[0], is not equal to %arr[1]' // => 'undefined is not equal to Bar'

有什么想法可以修改模式以使其可以与百分比%一起使用而不是大括号{}吗?

最佳答案

您可以使用此模式:

var regex = /%([^\b]+)/g;

表示 % 符号后跟一个完整的单词。这不包括空白字符、下划线等。

如果您也希望能够使用这些字符,您可以编写:

var regex = /%(\S+)/g;

这相当于:

var regex = /%([^\s]+)/g;

关于javascript - 修改格式模式以替换字符串中的占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185130/

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