我有字符串,调用它包含一些文字,比如说
var s = 'The cat in the hat';
我知道'cat'从4开始到6结束。添加跨度的最佳方式是什么,以便我最终得到
'The <span id='myid'>cat</span> in the hat.'
是否有一些HTML dom解析魔术机能做到这一点?假设我从纯文本开始。重复答案的链接也将非常受欢迎。
更新请注意,我可能需要插入多个范围。所以我必须以某种方式记住原始字符串将它重新组合在一起。例如,考虑我有坐标来插入“帽子”的范围。
Update2 我想强调一下,有很多替代型解决方案,我从偏移开始,例如
[[4,6],[16,18]]添加跨度。
答案 0 :(得分: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>
答案 1 :(得分: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>');
}
答案 2 :(得分: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);
试试这个Fiddle