2016-04-05 24 views
0

我想比較JS變量定義內的div文本(這是一個句子。)和文本的價值:JS變量和DIV文本之間比較

function isSame(){ 
s="This is a sentence." 
    var text1 = $('#right').text(); 
    var t1 = text1.replace(/ /g,'').replace(/&nbsp;/g, '').replace(/\<br\s*[\/]?>/gi, '').replace('\t',''); 
    var s1 = s.replace(/ /g,'').replace(/&nbsp;/g, '').replace(/\<br\s*[\/]?>/gi, '').replace('\t',''); 
    console.log(s1+" VS "+ t1); 
    if (t1 == s1){ 
     console.log("Same"); 
    } else { 
     console.log("Not same..."); 
    } 
} 

所有.replace是因爲控制檯我有額外的標籤在div(其中有風格),我有額外的空間。控制檯日誌顯示:

Thisisasentence. VS 

Thisisasentence. 

Not same... 

它是什麼我錯過了?

+0

這將是值得發佈的HTML以及。 – DBS

+0

貌似在t1開始時有兩個換行符 –

+0

@DBS html是:

fran35

回答

2

而不是整個正則表達式,你試過使用trim()方法嗎?

documentation for String.prototype.trim()所述,在MDN:

裝飾()方法從一個串的兩端除去空白。這裏的空格是所有空格字符(空格,製表符,不間斷空格等)和所有行結束符字符(LF,CR等)。

我相信你的代碼應該被簡化爲:

function isSame() { 
    var s = "This is a sentence."; 
    var text1 = $('#right').text(); 

    console.log(s1 + " VS " + t1); 
    if (text1.trim() === s1) { 
     console.log("Same"); 
    } else { 
     console.log("Not the same..."); 
    } 
} 

和預期的比較會工作。


更新:

正如已經在進一步的答案被YsharpRob Brander提到的,你可以通過它推廣到其它匹配新行並回車元素增加你的正則表達式。這將通過增加\s+匹配它更改當前的正則表達式,從而導致:

replace(/\s+/g, '') 
0

您的正則表達式看起來像他們試圖替換任何空格字符。我建議使用\ s作爲正則表達式的一部分,因爲它會查找所有空白的排列。

您的兩個字符串不相等,因爲在該短語前後有一個換行符。你可以試着用.replace('\ n','')代替新行。

+0

嗨Rob,感謝您的建議和\ n。控制檯現在將它們顯示在同一行中,但它仍顯示爲不同。 – fran35

0

您嘗試使用

replace(/ /g, '') 

擺脫空白,但作爲人指出的那樣,這是不夠的擺脫回車和/或換行。

試試這個:

replace(/\s+/g, '') 

將在它被應用到琴絃照顧剝離了所有的「\ T」,「\ n」,等的,無處不在。

'HTH,

+0

謝謝,但工作,但最終使用修剪,希望我可以投票2正確的答案。 – fran35