
Trong bài đăng này, ban sẽ tìm hiểu cách thay thế tất cả các lần xuất hiện chuỗi trong JavaScript bằng cách tách và nối một chuỗi, string.replace() kết hợp với biểu thức chính quy toàn cực và string.replaceAll().
Tách và nối một mảng
Nếu google cách thay thế tất cả các lần xuất hiện chuỗi trong JavaScript, cách tiếp cận đầu tiền bạn có thể tìm thấy là sử dụng một mảng trung gian:
Đây là cách hoạt động
1.Chia stringthành pieceschuỗi search:
2.Sau đó nối các mảnh đặt replacechuỗi ở giữa:
Ví dụ: hãy thay thế tất cả khoảng trắng ' 'bằng dấu gạch nối '-'trong 'duck duck go'chuỗi:
'duck duck go'.split(' ')chia chuỗi thành nhiều phần: ['duck', 'duck', 'go'].
Sau đó, các mảnh ['duck', 'duck', 'go'].join('-')được nối lại bằng cách chèn '-'vào giữa chúng, tạo ra chuỗi 'duck-duck-go'.
Đây là một hàm trợ giúp tổng quát sử dụng phương pháp chia tách và nối:
JS Mở bản demo.
Cách tiếp cận này yêu cầu chuyển đổi chuỗi thành một mảng và sau đó quay lại thành chuỗi. Hãy tiếp tục tìm kiếm những lựa chọn thay thế tốt hơn.
Thay thế () bằng biểu tượng thức chính quy toàn cục
Phương thức chuỗi string.replace(regExpSearch, replaceWith)tìmkiếm và thay thế các lần xuất hiện của biểu thức chính quy regExpSearchbằng replaceWithchuỗi.
Để làm cho phương thức replace()thay thế tất cả các lần xuất hiện của mẫu - bạn phải bật cờ chung trên biểu thức chính quy:
- Nối
gvào cuối biểu thức chính quy theo nghĩa đen:/search/g - Hoặc khi sử dụng hàm tạo biểu thức chính quy, hãy thêm
'g'vào đối số thứ hai:new RegExp('search', 'g')
Hãy thay thế tất cả các lần xuất hiện của ' 'bằng '-':
Biểu thức chính quy /\s/g(lưu ý gcờ chung) khớp với khoảng trắng ' '.
'duck duck go'.replace(/\s/g, '-')thay thế tất cả các kết quả khớp /\s/gbằng '-', dẫn đến 'duck-duck-go'.
Bạn có thể dễ dàng thực hiện thay thế không phân biệt chữ hoa chữ thường bằng cách thêm icờ vào biểu thức chính quy:
Biểu thức chính quy /\s/g(lưu ý gcờ chung) khớp với khoảng trắng ' '.
'duck duck go'.replace(/\s/g, '-')thay thế tất cả các kết quả khớp /\s/gbằng '-', dẫn đến 'duck-duck-go'.
Bạn có thể dễ dàng thực hiện thay thế không phân biệt chữ hoa chữ thường bằng cách thêm icờ vào biểu thức chính quy:
Biểu thức chính quy /duck/githực hiện tìm kiếm không phân biệt chữ hoa chữ thường (ghi chú ivà gcờ). /duck/gitrận đấu 'DUCK', cũng như 'Duck'.
Việc gọi 'DUCK Duck go'.replace(/duck/gi, 'goose')sẽ thay thế tất cả kết quả khớp của /duck/gichuỗi con bằng 'goose'.
Biểu thức chính quy từ một chuỗi
Khi biểu thức chính quy được tạo từ một chuỗi, bạn phải thoát khỏi các ký tự - [ ] / { } ( ) * + ? . \ ^ $ |vì chúng có ý nghĩa đặc biệt trong biểu thức chính quy.
Vì vậy, các ký tự đặc biệt là một vấn đề khi bạn muốn thực hiện thay thế mọi thao tác. Đây là một ví dụ:
Đoạn mã trên cố gắng chuyển chuỗi tìm kiếm '+'thành một biểu thức chính quy. Nhưng '+'là một biểu thức chính quy không hợp lệ nên sẽ SyntaxError: Invalid regular expression: /+/bị loại bỏ.
Thoát khỏi nhân vật '\\+'sẽ giải quyết được vấn đề. JS thử bản demo cố định
Thay thế() bằng một chuỗi
Nếu đối số đầu tiên searchcủa string.replace(search, replaceWith)là một chuỗi thì phương thức này chỉ thay thế lần xuất hiện đầu tiên của search:
'duck duck go'.replace(' ', '-')chỉ thay thế sự xuất hiện đầu tiên của một khoảng trắng.
Phương thức thay thếAll()
Cuối cùng, phương thức này string.replaceAll(search, replaceWith)thay thế tất cả sự xuất hiện của searchchuỗi bằng replaceWith.
Hãy thay thế tất cả các lần xuất hiện của ' 'bằng '-':
'duck duck go'.replaceAll(' ', '-')thay thế tất cả các lần xuất hiện của ' 'chuỗi bằng '-'.
string.replaceAll(search, replaceWith)là cách tốt nhất để thay thế tất cả các lần xuất hiện chuỗi trong một chuỗi
Lưu ý rằng trình duyệt hỗ trợ phương pháp này hiện bị hạn chế và bạn có thể yêu cầu polyfill .
Sự khác biệt giữa thay thếAll() và thay thế()
Các phương thức chuỗi replaceAll(search, replaceWith)và replace(search, replaceWith)cách hoạt động đều giống nhau, ngoại trừ 2 điều:
- Nếu
searchđối số là một chuỗi,replaceAll()thay thế tất cả các lần xuất hiệnsearchbằng ,replaceWithtrong khi chỉreplace()thay thế lần xuất hiện đầu tiên - Nếu
searchđối số là một biểu thức chính quy không toàn cục thì sẽreplaceAll()đưa ra mộtTypeErrorngoại lệ.

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :
Tag Cloud:
Tác giả: quyenntt
Bài viết liên quan
Full Stack là gì? Tìm hiểu về lập trình Full Stack cho người mới
Trong thế giới lập trình, full stack là một trong những vị trí hot nhất ngành IT, được nhiều doanh nghiệp săn đón. Nhưng thực sự full stack là gì, cần những kỹ năng nào và có khác gì so với các “stack” khác như MERN, MEAN hay ELK? Hãy cùng Devwork tìm hiểu chi tiết trong bài viết dưới đây nhé!...
Ansible là gì? Khám phá tính năng, ứng dụng và cách bắt đầu
Không chỉ đơn giản là một công cụ dòng lệnh, Ansible là cả một hệ sinh thái phục vụ cho tự động hóa IT hiện đại. Bài viết này sẽ giúp bạn hiểu rõ Ansible là gì, cách thức hoạt động nội tại, các tình huống mà nó thực sự tỏa sáng, cũng như cách viết Playbook cơ bản.

Tự Học Lập Trình Tại Nhà Miễn Phí Cho Người Mới Bắt Đầu
Tự học lập trình đang trở thành xu hướng được nhiều người quan tâm, đặc biệt trong bối cảnh nhu cầu nhân lực CNTT ngày càng tăng cao. Không cần đến trường lớp hay đóng hàng chục triệu cho các khoá học, bạn hoàn toàn có thể bắt đầu tự học lập trình tại nhà, miễn phí, và vẫn có thể trở thành lập trình viên chuyên nghiệp. Bài viết này sẽ giúc bạn hiểu rõ hơn về hành trình đó.

Debug Là Gì? BÍ MẬT Sửa Lỗi Thần Tốc Cho Lập Trình Viên
Bạn đã bao giờ tự hỏi debug là gì và tại sao nó lại là kỹ năng sống còn của mọi lập trình viên? Bài viết này từ Devwork sẽ giải mã tất tần tật về "nghệ thuật" gỡ lỗi, từ khái niệm cơ bản, công cụ hỗ trợ đến các lưu ý quan trọng khi thực chiến.

Wireframe là gì? "Bộ khung xương" của mọi website và ứng dụng
Wireframe là một công cụ quan trọng trong quá trình thiết kế và phát triển sản phẩm. Trong quá trình sáng tạo, wireframe được xem như một “ngôn ngữ” trực quan, thể hiện thông qua các bản vẽ phác thảo giúp developer, product manager và designer có thể giao tiếp, trao đổi ý tưởng và thống nhất với nhau dễ dàng hơn. Vậy wireframe là gì, có những điểm thú vị nào cần khám phá? Cùng Devwork tìm hiểu chi tiết ngay trong bài viết này.
Kafka Là Gì? BẬT MÍ Toàn Tập Về Apache Kafka & Kafka Stream Cho Người Mới Bắt Đầu
Giữa vô vàn công nghệ, Kafka nổi lên như một thế lực không thể thiếu. Bạn đang tìm kiếm lời giải đáp cho câu hỏi Kafka là gì và tại sao nó lại quan trọng đến vậy? Hãy cùng Devwork vén màn bí mật, khám phá toàn bộ hệ sinh thái Apache Kafka và Kafka Stream qua bài viết chi tiết từ A-Z này!
















