1

我有字符串,称它为包含一些文本的 s,比如说

var s = 'The cat in the hat';

我知道“猫”从 4 开始,以 6 结束。添加跨度的最佳方法是什么,以便我最终得到

'The <span id='myid'>cat</span> in the hat.'

是否有一些 HTML dom 解析魔法机器可以很好地做到这一点?假设我从纯文本开始。重复答案的链接也将不胜感激。

更新请注意,我可能需要插入多个跨度。所以我必须以某种方式记住原始字符串才能将其重新组合在一起。例如,考虑我也有坐标来插入“帽子”的跨度。

Update2已经有不少替代类型的解决方案,我想强调一下,我是从偏移量开始的,例如

[[4, 6], [16, 18]] 添加跨度。

4

3 回答 3

0

你可以使用String#replace

var s = 'The cat in the hat';
var keywords = ['cat', 'hat'];

for (var i=0; i < keywords.length; i++) {
    s = s.replace(keywords[i], '<span>$&</span>');
}

console.log(s); // The <span>cat</span> in the <span>hat</span>
于 2012-06-23T04:27:11.397 回答
0

尝试像这样替换...

var s = 'The cat in the hat'
s.replace(s.substring(4,7),'<span id="myid">' + s.substring(4,7) + '</span>');

或者

要同时替换'cat''hat' 使用如下:

var s = 'The cat in the hat';
var arr = ['cat', 'hat'];

for (var i=0; i < arr.length; i++) {
    s = s.replace(new RegExp(arr[i],"g"),'<span id="myid">' + arr[i] + '</span>');
}
于 2012-06-23T04:37:25.227 回答
0

途中有,

var s = 'The cat in the hat';
var newStr = '';
​var strArr = s.split(" ");
for (i=0;i<strArr.length;i++){
    alert(strArr[i]);
    if(strArr[i] == 'cat'){
        newStr  += ' <span>' + strArr[i] + '</span>';    
    }else{
            newStr  += ' ' + strArr[i];
    }       
}
alert(newStr);
​

试试这个小提琴

于 2012-06-23T06:00:51.870 回答