Bài học theo mô-đun (4/4)
Tách bằng biểu thức chính quy
String.prototype.split(separator) không chỉ chấp nhận một chuỗi cố định mà còn chấp nhận
cũng là regex làm dấu phân cách. Điều này làm cho nó trở thành một công cụ mạnh mẽ để token hóa
văn bản có cấu trúc.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]Regex /[,\s]+/ khớp với "một hoặc nhiều dấu phẩy hoặc khoảng trắng": tách
phân chia trên bất kỳ dấu phân cách ghép nào.
Trường hợp điển hình
- CSV cho phép:
text.split(/\s*,\s*/)để xử lý khoảng trắng xung quanh dấu phẩy. - Mã thông báo ngây thơ:
text.split(/\s+/)để trích xuất từ. - Giữ dấu phân cách: nếu biểu thức chính quy chứa các nhóm thu thập, thì nội dung của các nhóm được bao gồm trong mảng kết quả.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Nếu không có nhóm () dấu chấm phẩy sẽ biến mất. Với (;) bạn giữ nó
trong kết quả.
Bảo quản dấu phân cách trong hoạt động phân chia
Nếu bạn đặt dấu phân tách bên trong dấu ngoặc đơn bắt giữ, thì đầu ra của String.prototype.split sẽ bao gồm chính dấu phân cách đó làm thành phần trong mảng cuối cùng, thay vì loại bỏ chúng.
Hãy thử nó
Tìm mọi dấu phân cách CSV cho phép: dấu phẩy có khoảng trắng tùy chọn xung quanh nó. Bằng cách này, bạn có thể sử dụng nó theo cách chia nhỏ để mã hóa danh sách.
Hiển thị gợi ý
Sử dụng \\s* trước và sau dấu phẩy để loại bỏ mọi khoảng trắng tùy chọn.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Tìm mọi dấu phân cách 'dấu cách hoặc dấu chấm phẩy' (một hoặc nhiều). Cách phân chia này sẽ mã hóa văn bản thành các từ.
Hiển thị gợi ý
Kết hợp \\s và ; trong một lớp [\\s;] với bộ định lượng +.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
Hiển thị gợi ý
Enclose the math operators character class in capture parentheses to preserve them in the split array.
Giải pháp khả dụng sau 3 lần thử