我有串狀與
var data="<html> <div style=""> fasf saf <div></html>"
輸出應該像
var data="<html>&npsp<div style""> fasf saf <div></html>"
我有串狀與
var data="<html> <div style=""> fasf saf <div></html>"
輸出應該像
var data="<html>&npsp<div style""> fasf saf <div></html>"
正如有人指出的那樣,你不應該使用正則表達式解析HTML代替節點之間的空間,它一般來說太複雜(Here有一個很好的討論)。
而且,你缺少你的最後一個div結束標籤,它應該是:
...</div></html>
最後,如果你仍想使用正則表達式,你可以嘗試尋找「> \ S + <」和替換爲'> & npsp <'替換不同標籤之間的空格。
更換標籤內的空間要困難得多,我想你真的應該避免它。
因爲你在標籤中有空間,所以不能簡單地替換。試試看:
var data="<html> <div style=''> fasf saf <div></html>";
var strs = data.split('');
var openTag = false;
for(var i = 0; i< data.length; i++){
if(strs[i]=="<")
openTag = true;
if(strs[i]==">")
openTag = false;
if(!openTag && strs[i] == " ")
strs[i] = " "
}
console.log(strs.join(''));
嘗試使用DOM。
//create a dummy div.
var elem = document.createElement("div");
//now append the text as child.
elem.innerHTML = data;
//now get the string that needs the edit.
//if you have multiple divs iterate through the elements and do the following.
var temp = elem.getElementsByTagName("div")[0].innerHTML;
temp = temp.replace(new RegExp(" ","g")," ");
//finally update the div and get back edited data.
elem.getElementsByTagName("div")[0].innerHTML = temp;
data = elem.innerHTML;
建議:不要使用正則表達式來處理HTML文本,因爲HTML文本太複雜,正則表達式無法正確處理。 – Andreas