Tìm hiểu cách thay thế khoảng trắng bên trong chuỗi bằng JavaScript bằng cách sử dụng Regex (Biểu thức chính quy) - một công cụ để tìm kiếm các mẫu trong văn bản.
Regex (thường được đánh vần là “RegEx hoặc“ RegExp ”) là một công cụ hiệu quả để làm việc với chuỗi (văn bản). Các trường hợp sử dụng phổ biến nhất của Regex là:
- Xác thực văn bản
- Tìm kiếm văn bản
Hôm nay, bạn sẽ học từ một ví dụ đơn giản sử dụng regex để thay thế tất cả khoảng trắng trong một dòng văn bản (chuỗi) bằng không có gì - nhưng bạn có thể sử dụng ví dụ mã sau để thay thế khoảng trắng bằng các ký tự khác.
Khoảng trắng được coi là một ký tự. Vì vậy, mọi khoảng trắng giữa các từ trong câu này mà bạn đang đọc bây giờ được tính là một ký tự khoảng trắng.
Câu này có 6 ký tự khoảng trắng.
Để thay thế các ký tự khoảng trắng, regex có một cái gọi là ký tự meta được gọi là \s
tìm kiếm một ký tự khoảng trắng duy nhất, bao gồm dòng mới, tab và Unicode.
Như thế này:
const sentence = "This sentence has 6 white space characters."
console.log(sentence.replace(/\s/g, ""))
// Thissentencehas6whitespacecharacters.
Điều gì đang xảy ra trong mã:
- Đầu tiên, chúng tôi đính kèm
replace()
phương thức cho câusentence
biến tham chiếu đến chuỗi mà chúng tôi muốn xóa khoảng trắng. - Sau đó, thêm
\s
đã nói ở trên ký tự meta làm đối số để tìm ký tự khoảng trắng. Vì dấu gạch chéo ngược (\
) là một lối thoát dành riêng ký tự trong JavaScript, chúng tôi thêm/
phía trước nó để unescape nó, vì vậy nó trở thành/\s/
. - Sau đó, chúng tôi sử dụng
g
chung cờ, cho JavaScript biết rằng chúng tôi muốn tìm tất cả các ký tự khoảng trắng từ chuỗi. Nếu bạn không thêmg
, chỉ trường hợp khoảng trắng đầu tiên (giữaThis sentence
) sẽ được thay thế. - Cuối cùng, chúng ta sẽ thay thế khoảng trắng bằng cái gì? Bất kỳ chuỗi trống nào
""
đó là tính năng xóa các ký tự khoảng trắng và làm cho mọi từ được gắn kết thành một từ duy nhất.
Lưu ý:chúng tôi chưa sửa đổi sentence
ban đầu bằng cách thực hiện việc này, chúng tôi chỉ đang sử dụng console.log()
để in ra nó trông như thế nào nếu bạn sử dụng replace(/\s/g, "")
phương thức regex trên đó.
Nếu bạn muốn thay đổi giá trị của câu sentence
biến để không chứa khoảng trắng, bạn cần phải gán nó cho một biến mới, sau đó tham chiếu đến biến đó từ bây giờ trở đi khi bạn cần quyền truy cập vào nó.
Như thế này:
const sentence = "This sentence has 6 white space characters."
const sentenceRemoveWhiteSpace = sentence.replace(/\s/g, "")
console.log(sentenceRemoveWhiteSpace)
// Thissentencehas6whitespacecharacters.
Và chỉ để đảm bảo rằng phép toán của tôi là đúng, hãy sử dụng một phương pháp regex hữu ích khác có tên là match()
để đếm số ký tự khoảng trắng trong sentence
ban đầu và xem nó có thực sự là 6 không:
console.log(sentence.match(/\s/g).length)
// 6
Phù, đúng rồi!