Tìm hiểu cách trích xuất văn bản giữa các dấu ngoặc kép từ một chuỗi bằng JavaScript.
Giả sử bạn muốn nhận một số văn bản được trích dẫn từ một khối văn bản. Dấu ngoặc kép thường được bao bọc bởi dấu ngoặc kép (" "
). Không sao, bạn có thể sử dụng match()
của JavaScript và một số phép thuật RegEx.
Đây là một khối văn bản (giá trị chuỗi), chứa một câu được trích dẫn kép, mà chúng tôi gán cho một biến có tên là 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.'
Bây giờ chúng ta hãy đính kèm match()
phương thức vào biến và chuyển đối số trông hơi vô nghĩa này /(?:"[^"]*"|^[^"]*$)/)[0].replace(/"/g, ""
(xin lỗi):
const extractQuote = textWithQuote
.match(/(?:"[^"]*"|^[^"]*$)/)[0]
.replace(/"/g, "")
Và in kết quả:
console.log(extractQuote)
// "First we make our habits, then our habits make us"
Lý do chúng tôi sử dụng [0]
là nếu không thì chuỗi trả về bị trùng lặp. Bằng cách sử dụng [0]
chúng tôi chỉ định rằng chúng tôi chỉ muốn trả về (một) kết quả đầu tiên.
Lý do chúng tôi sử dụng replace()
phương thức (.replace(/"/g, "")
) là nếu không, kết quả trả về sẽ chứa dấu ngoặc kép thừa (vì chúng tôi đang trả về văn bản được trích dẫn bên trong một chuỗi đã có dấu ngoặc kép).
Một phương pháp thay thế sử dụng split ()
Bạn cũng có thể nhận giá trị văn bản được trích dẫn kép bằng cách sử dụng split()
phương pháp:
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"
Trong trường hợp này, chúng tôi phải chỉ định rằng chúng tôi muốn trả về kết quả thứ hai [1]
bởi vì [0]
sẽ trả về One of my favorite quotes is
.
Nếu bạn chỉ định [2]
, bạn sẽ nhận được văn bản sau ngay sau "
thứ hai dấu ngoặc kép.
Tôi không chắc khi nào sử dụng một trong hai phương pháp cũng như ưu và nhược điểm là gì, vì gần đây tôi mới bắt đầu đi sâu vào chủ đề về cụm từ thông dụng.