2017-08-03 33 views
1

字上加包裝在JS我需要在下面的代碼整個文件文本words.using添加跨度包裝我可以能夠使用上面的代碼生病得到下面添加包裝如何與空間

function walk(root) 
{ 
    if (root.nodeType == 3) // text node 
    { 
     doReplace(root); 
     return; 
    } 
    var children = root.childNodes; 
    for (var i = 0;i<children.length ;i++) 
    { 
     walk(children[i]); 
    } 
} 

function doReplace(text) 
{ 
    var start = counter; 
    counter = counter+text.nodeValue.length; 
    var div = document.createElement("div"); 

    var string = text.nodeValue; 
    var len = string.trim(); 
    if(len.length == 0){ 
     return; 
    } 

    var nespan = string.replace(/\b(\w+)\b/g,function myFunction(match, contents, offset, s){ 
     var end = start + contents.length; 
     var id = start+"_"+end; 

     start = end; 
     return "<span class='isparent' id='"+id+"'>"+contents+"</span>"; 

    }); 


    div.innerHTML = nespan; 
    var parent = text.parentNode; 
    var children = div.childNodes; 
    for (var i = children.length - 1 ; i >= 0 ; i--) 
    { 
     parent.insertBefore(children[i], text.nextSibling); 
    } 
    parent.removeChild(text); 
} 

導致

輸入:

#1好

出來放:

<span>Stackoverflow</span> <span>is</span> <span>good</span> 

期待的結果:

<span>Stackoverflow </span><span>is </span><span>good</span> 

回答

2

可選的空格字符到你的正則表達式,添加單詞之後,但在第二個單詞邊界之前:\b(\w+\s*)\b

+1

你可以把它改成'\ B(\ w + \ S *) \ b'支持多一個空格 – hsd

+0

cdm:謝謝你節省我的時間。謝謝 –

+0

我如何處理特殊字符(__,?,',「,」,等等)? –