Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วิธีแยกข้อความระหว่างเครื่องหมายคำพูดคู่ด้วย JavaScript

เรียนรู้วิธีแยกข้อความระหว่างเครื่องหมายคำพูดคู่จากสตริงด้วย 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] คุณจะได้รับข้อความต่อจาก " . ที่สองทันที อัญประกาศคู่

ฉันไม่แน่ใจว่าจะใช้วิธีใดวิธีหนึ่งเมื่อใด และข้อดีและข้อเสียคืออะไร เนื่องจากฉันเพิ่งเริ่มเจาะลึกในหัวข้อของนิพจน์ทั่วไป