1

私は文字列を持っています、それをいくつかのテキストを含む s と呼びます

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]] にスパンを追加します。

4

3 に答える 3

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 に答える
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

使用できます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 に答える