जिस तरह से मैं करता हूं वह व्यावहारिक रूप से एक-लाइनर है।
फ़ंक्शन एक रेंज ऑब्जेक्ट बनाता है और फिर चाइल्ड कंटेंट के रूप में स्ट्रिंग के साथ रेंज में एक DocumentFragment बनाता है।
फिर यह टुकड़े के पाठ को पकड़ लेता है, किसी भी "अदृश्य" / शून्य-चौड़ाई वाले वर्णों को हटा देता है, और इसे किसी भी अग्रणी / अनुगामी श्वेत स्थान पर ट्रिम कर देता है।
मुझे लगता है कि यह सवाल पुराना है, मुझे लगा कि मेरा समाधान अनूठा था और साझा करना चाहता था। :)
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);