我正在尝试用具有各种特征的标签替换字符串中的某些单词。假设我有以下句子:
{ Lorem [ ipsum ] } dolor sit amet, consetetur [ sadipscing ] elitr.
结果应如下:
<span>Lorem <span>ipsum</span></span> dolor sit amet, consetetur <span>sadipscing</span> elitr.
我一直在尝试根据每个字符串的起始索引进行排序,并以相反的顺序替换它们,但这种方法仍不适用于重叠字符串。
请你帮忙创建一个能做到这一点的javascript函数吗?
谢谢你, 尼克
括号仅用于演示,我实际拥有的是我需要用跨度包围的弦的偏移量。例如,我有以下偏移数组:[0, 4], [0, 10]
答案 0 :(得分:1)
使用Javascript的replace()
方法,将多个替换级联在一起。
var str = '{ Lorem [ ipsum ] } dolor sit amet, consetetur [ sadipscing ] elitr.'
var repl = str.replace(/[[{]/g, '<span>').replace(/[\]}]/g, '</span>');
答案 1 :(得分:0)
如果您确定括号是平衡的(否则您将获得未封闭的span标签或孤立的结束标签),您可以使用:
var result = str.replace(/[{[]|([\]}])/g, function (_, g1) {
if (g1 == undefined) return '<span>';
return '</span>';
});
答案 2 :(得分:0)
如果你想严格找到成对的括号并将它们包起来:
var string = "{ Lorem [ ipsum ] } dolor sit amet, consetetur [ sadipscing ] elitr.";
var _curly = /\{([\W,\w]+)\}/g;
var _square = /\[([\w ]+)\]/g;
var result = string.replace(_curly, "<span>$1</span>").replace(_square , "<span>$1</span>");