Bunu yapma şeklim neredeyse tek satırlık.
İşlev bir Range nesnesi oluşturur ve ardından bir DocumentFragment oluşturur Aralıkta alt içerik olarak dizeyle .
Daha sonra parçanın metnini alır, herhangi bir "görünmez" / sıfır genişlikteki karakterleri kaldırır ve öndeki / sondaki beyaz boşluktan onu kırpar.
Bu sorunun eski olduğunun farkındayım, çözümümün benzersiz olduğunu düşündüm ve paylaşmak istedim. :)
function getTextFromString(htmlString) {
return document
.createRange()
// Creates a fragment and turns the supplied string into HTML nodes
.createContextualFragment(htmlString)
// Gets the text from the fragment
.textContent
// Removes the Zero-Width Space, Zero-Width Joiner, Zero-Width No-Break Space, Left-To-Right Mark, and Right-To-Left Mark characters
.replace(/[\u200B-\u200D\uFEFF\u200E\u200F]/g, '')
// Trims off any extra space on either end of the string
.trim();
}
var cleanString = getTextFromString('<p>Hello world! I <em>love</em> <strong>JavaScript</strong>!!!</p>');
alert(cleanString);