เรียนรู้วิธีแยกข้อความระหว่างเครื่องหมายคำพูดคู่จากสตริงด้วย JavaScript
สมมติว่าคุณต้องการรับข้อความที่ยกมาจากบล็อกข้อความ ใบเสนอราคามักจะถูกปิดด้วยเครื่องหมายคำพูดคู่ (" "
). ไม่มีปัญหา คุณสามารถใช้ match()
. ของ JavaScript ได้ วิธีการและเวทย์มนตร์ RegEx
นี่คือบล็อคข้อความ (ค่าสตริง) ซึ่งประกอบด้วยประโยคที่มีเครื่องหมายอัญประกาศคู่หนึ่งประโยค ซึ่งเรากำหนดให้กับตัวแปรชื่อ textWithQuote
:
const textWithQuote =
'One of my favorite quotes is "First we make our habits, then our habits make us". This quote is sometimes attributed to John Dryden, or other authors.'
ทีนี้มาแนบ match()
. กัน ให้กับตัวแปรและส่งผ่านอาร์กิวเมนต์ที่ดูค่อนข้างคลุมเครือนี้ /(?:"[^"]*"|^[^"]*$)/)[0].replace(/"/g, ""
(ขออภัย):
const extractQuote = textWithQuote
.match(/(?:"[^"]*"|^[^"]*$)/)[0]
.replace(/"/g, "")
และพิมพ์ผลลัพธ์:
console.log(extractQuote)
// "First we make our habits, then our habits make us"
เหตุผลที่เราใช้ [0]
มิฉะนั้นสตริงที่ส่งคืนจะซ้ำกัน โดยใช้ [0]
เราระบุว่าเราต้องการส่งคืนผลลัพธ์แรก (หนึ่ง) เท่านั้น
เหตุผลที่เราใช้ replace()
เมธอด (.replace(/"/g, "")
) มิฉะนั้น ผลลัพธ์ที่ส่งคืนจะมีเครื่องหมายคำพูดส่วนเกิน (เพราะเราส่งคืนข้อความที่ยกมาในสตริงที่มีเครื่องหมายคำพูดอยู่แล้ว)
วิธีอื่นโดยใช้ split()
คุณยังสามารถรับค่าข้อความที่มีเครื่องหมายอัญประกาศโดยใช้ split()
วิธีการ:
const textWithQuote =
'One of my favorite quotes is "First we make our habits, then our habits make us". This quote is sometimes attributed to John Dryden, or other authors.'
console.log(textWithQuote.split('"')[1])
// "First we make our habits, then our habits make us"
ในกรณีนี้เราต้องระบุให้ส่งผลลัพธ์ที่สอง [1]
เพราะ [0]
จะส่งคืน One of my favorite quotes is
.
หากคุณระบุ [2]
คุณจะได้รับข้อความต่อจาก "
. ที่สองทันที อัญประกาศคู่
ฉันไม่แน่ใจว่าจะใช้วิธีใดวิธีหนึ่งเมื่อใด และข้อดีและข้อเสียคืออะไร เนื่องจากฉันเพิ่งเริ่มเจาะลึกในหัวข้อของนิพจน์ทั่วไป