วิธีที่ฉันทำคือซับเดียว
ฟังก์ชันจะสร้างวัตถุ Rangeจากนั้นสร้าง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);