簡體   English   中英

如何在不使用regexp的情況下從JavaScript中的字符串中刪除HTML標簽?

[英]how to remove HTML tags from a string in JavaScript without using regexp?

我是編程新手,正在解決此問題。 我已經嘗試過3個使用string.slice()的循環,但是由於某種原因,它會打印一個空字符串。

您能否解釋一下代碼內部發生的情況以及為什么它會輸出錯誤的輸出以及我該如何糾正,而不是給我您正確答案的版本,以便我可以從錯誤中學習。

測試輸入是

<p><strong><em>PHP Exercises</em></strong></p>

並且輸出應該是PHP練習

ps這不是PHP練習,我不感到困惑

這是我的代碼:

function remove(answer){ 

    var sen = answer.split("");
    var arr = [];
    for (var i = 0; i<answer.length; i++){
        if (answer[i] == "<"){
            for (var j = i; j<answer.length; j++){
                if (answer[j] == ">"){
                    for (var k = j; k<answer.length; k++){
                        if (answer[k] == "<"){
                            return answer.slice(j+1, k);                
                        }
                    }
                }
            }
        }
    }
}

嘗試這個:

 function stripTags(data) { var tmpElement = document.createElement("div"); tmpElement.innerHTML = data; return tmpElement.textContent || tmpElement.innerText || ""; } var something = '<p><strong><em>PHP Exercises</em></strong></p>'; alert(stripTags(something)); 

或者您可以使用string.js( string.js鏈接 ):

 var S = window.S; var something = '<p><strong><em>PHP Exercises</em></strong></p>'; something = S(something).stripTags().s; alert(something); 
 <script src="https://raw.githubusercontent.com/jprichardson/string.js/master/dist/string.min.js"></script> 

如果您正在嘗試使用nodejs,則:

var S = require('string');
var something = '<p><strong><em>PHP Exercises</em></strong></p>';
something = S(something).stripTags().s;
console.log(something);

至於為什么所提供的代碼不起作用,當j = 2和k = 3時,代碼返回。我通過編寫console.log(j,k);發現了這一點。 即將返回之前。 這種見解清楚地表明,當您實際上似乎想標識打開和關閉的“ em”標簽時,代碼正在標識第一組打開的標簽。 其他人提供的答案更可靠,但是對您的代碼的快速修復是:

更改

if (answer[i] == "<"){

if (answer.slice(i, i+3) == "<em"){

希望這可以幫助!

您的代碼不解釋任何問題 它只是在第一次遇到“>”和“ <”之間時停止,在第一種情況下,它什么都不是! 您應該檢查字符是否存在,如果沒有,請繼續。

老實說,這是教科書用來使您跳出框框思考的那些無用練習之一。 但是,您永遠都不想遍歷字符串以在標簽之間查找文本。 JavaScript內置了許多方法,實際上是在重新設計輪子以實現此目的……也就是說,如果輪子確實是一個for循環。

如果您真的想避免使用正則表達式和其他內置函數,以便從長遠的角度解決問題,那么最好先嘗試使用括號進行切片!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM