gpt4 book ai didi

javascript - 模板处理,字符串重复{{repeat 5}}

转载 作者:行者123 更新时间:2023-11-30 15:33:24 27 4
gpt4 key购买 nike

我有以下案例

输入

var str = '{{repeat 2}} some string {{/repeat}}';

输出

str = 'some string, some string';

输入

var str = '{{repeat 2}}{"prop1":"some data"}{{/repeat}}';

输出

str = '{"prop1":"some data"}, {"prop1":"some data"}';

输入

var str = 'start of string {{repeat 2}} some string {{/repeat}} another string ';

输出

str = 'start of string some string, some string another string';

我本来想这样做

var test = "{{repeat 5}} test this string {{/repeat}}";
var arrStr = test.split(/[{{]/);

并通过循环处理 arrStr

还有其他好的方法吗?如何通过重复计数和重复中的字符串找到重复?

最佳答案

您可以在替换回调中替换文本:

function fillArray(s, num) {
var arr = [];
for (var i=0; i<num; i++) {
arr.push(s);
}
return arr;
}
var str = 'start of string {{repeat 2}} some string {{/repeat}} another string ';
var res = str.replace(/{{repeat\s+(\d+)}}([\s\S]*?){{\/repeat}}/g, function($0, $1, $2) {
return fillArray($2.trim(), parseInt($1, 10)).join(", ");
});
console.log(res);

fillArray 函数创建一个数组,其中包含必要的提取字符串出现次数。

获取所需内容的正则表达式

/{{repeat\s+(\d+)}}([\s\S]*?){{\/repeat}}/g

详细信息:

  • {{repeat - 文字字符序列
  • \s+ - 1+ 个空格
  • (\d+) - 第 1 组:一个或多个数字
  • }} - 文字 }}
  • ([\s\S]*?) - 第 2 组,任何 0+ 个字符,尽可能少,直到第一个
  • {{\/repeat}} - 文字 {{/repeat}}

关于javascript - 模板处理,字符串重复{{repeat 5}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934620/

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