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