目次
1. Giới thiệu
JavaScript là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất trong phát triển web. Đặc biệt, thao tác với chuỗi thường xuyên được dùng khi xử lý dữ liệu hoặc nhập liệu từ người dùng. Trong đó,replace()
method được biết đến như một công cụ mạnh mẽ giúp thay thế chuỗi một cách dễ dàng. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về phương thức replace()
trong JavaScript từ cơ bản đến nâng cao. Không chỉ giới thiệu cách sử dụng đơn giản mà còn đề cập đến việc dùng biểu thức chính quy (regex) cho các thao tác phức tạp cũng như các ví dụ thực tế, phù hợp cho cả người mới bắt đầu lẫn người dùng trung cấp.2. Cơ bản về phương thức replace()
Phương thức replace() là gì?
Phương thứcreplace()
là một hàm tích hợp trong JavaScript dùng để thay thế một phần cụ thể trong chuỗi bằng một chuỗi khác. Nó giúp chỉnh sửa và chuyển đổi dữ liệu chuỗi một cách hiệu quả.Cú pháp
string.replace(pattern, replacement)
- pattern: Chuỗi hoặc biểu thức chính quy cần tìm kiếm.
- replacement: Chuỗi thay thế hoặc hàm callback.
Cách sử dụng cơ bản
Ví dụ sau minh họa cách thay thế một chuỗi đơn giản:let text = "Hello, world!";
let result = text.replace("world", "JavaScript");
console.log(result); // "Hello, JavaScript!"
Đoạn code này thay thế chuỗi “world” bằng “JavaScript”.Lưu ý
replace()
chỉ thay thế lần khớp đầu tiên.- Nếu muốn thay thế tất cả các lần khớp, cần sử dụng biểu thức chính quy với cờ
g
.

3. Thay thế nâng cao với Biểu thức chính quy
Biểu thức chính quy là gì?
Biểu thức chính quy (Regex) là một công cụ mạnh mẽ để mô tả mẫu chuỗi. Trong JavaScript, Regex cho phép tìm kiếm và thay thế các mẫu phức tạp một cách dễ dàng.Ví dụ thay thế bằng Regex
let text = "apple, banana, apple";
let result = text.replace(/apple/g, "orange");
console.log(result); // "orange, banana, orange"
Các loại cờ (flags)
- g: Thay thế toàn bộ (tất cả các lần khớp)
- i: Không phân biệt chữ hoa/thường
- m: Chế độ nhiều dòng
Ví dụ: Thay thế không phân biệt chữ hoa/thường
let text = "Hello, hello, HELLO";
let result = text.replace(/hello/gi, "hi");
console.log(result); // "hi, hi, hi"
4. Thay thế nhiều vị trí
Thay thế tất cả các lần khớp
Để thay thế tất cả các vị trí khớp, sử dụng Regex với cờg
:let text = "cat dog cat bird";
let result = text.replace(/cat/g, "fish");
console.log(result); // "fish dog fish bird"
Kỹ thuật thay thế nhiều chuỗi khác nhau cùng lúc
let text = "red blue green";
let replacements = {red: "pink", blue: "cyan", green: "lime"};
Object.keys(replacements).forEach(key => {
let regex = new RegExp(key, "g");
text = text.replace(regex, replacements[key]);
});
console.log(text); // "pink cyan lime"
Phương pháp này giúp thay thế nhiều mẫu một lần, đồng thời cải thiện tính dễ đọc của code.5. Thay thế động với hàm Callback
Hàm Callback là gì?
Hàm callback được gọi trong quá trình thay thế, cho phép bạn tùy chỉnh kết quả dựa trên thông tin khớp hiện tại.Ví dụ thay thế động
1. Đảo ngược thứ tự chuỗi
let text = "Tanaka, Taro";
let result = text.replace(/(w+), (w+)/, (match, p1, p2) => {
return `${p2} ${p1}`;
});
console.log(result); // "Taro Tanaka"
2. Chuyển đổi định dạng ngày tháng
let date = "2024-12-25";
let formattedDate = date.replace(/(d{4})-(d{2})-(d{2})/, (match, year, month, day) => {
return `${month}/${day}/${year}`;
});
console.log(formattedDate); // "12/25/2024"

6. Xử lý ký tự đặc biệt và chuỗi escape
Ký tự đặc biệt là gì?
Trong biểu thức chính quy, một số ký tự nhất định được gọi là metacharacter và mang ý nghĩa đặc biệt. Để tìm kiếm hoặc thay thế chính xác các ký tự này, bạn cần sử dụng escape sequence.Thay thế chuỗi có chứa ký tự đặc biệt
Ví dụ 1: Thay thế chuỗi có dấu chấm
let text = "www.example.com";
let result = text.replace(/./g, "-");
console.log(result); // "www-example-com"
Ví dụ 2: Loại bỏ ký hiệu đô la
let price = "$1,000";
let result = price.replace(/$/g, "");
console.log(result); // "1,000"
Thay thế ký tự escape trong HTML
Ví dụ: Escape thẻ HTML
let html = "<div>Hello!</div>";
let result = html.replace(/</g, "<").replace(/>/g, ">");
console.log(result);
// "<div>Hello!</div>"
7. Ví dụ thực tế và kỹ thuật nâng cao
Chuyển ký tự xuống dòng thành thẻ <br>
let text = "HellonWorldnJavaScript";
let result = text.replace(/n/g, "<br>");
console.log(result);
// "Hello<br>World<br>JavaScript"
Xử lý tham số trong URL
let url = "https://example.com/?id=123&lang=en";
let result = url.replace(/lang=en/, "lang=ja");
console.log(result);
// "https://example.com/?id=123&lang=ja"
Sanitize dữ liệu nhập từ người dùng
function sanitizeInput(input) {
return input.replace(/</g, "<").replace(/>/g, ">");
}
let userInput = "<script>alert('XSS');</script>";
let safeInput = sanitizeInput(userInput);
console.log(safeInput);
// "<script>alert('XSS');</script>"
8. Lưu ý và Best Practices
Chỉ thay thế lần khớp đầu tiên
let text = "apple apple orange";
let result = text.replace("apple", "banana");
console.log(result); // "banana apple orange"
Phân biệt chữ hoa/thường
let text = "JavaScript is powerful. javascript is versatile.";
let result = text.replace(/javascript/gi, "JS");
console.log(result);
// "JS is powerful. JS is versatile."
Cẩn thận khi escape ký tự đặc biệt
function escapeRegExp(str) {
return str.replace(/[.*+?^${}()|[]\]/g, "\$&");
}
let text = "Price: $100";
let result = text.replace(new RegExp(escapeRegExp("$"), "g"), "USD ");
console.log(result);
// "Price: USD 100"

9. Kết luận
Tóm tắt nội dung
- Cách sử dụng cơ bản: Giải thích cú pháp và ví dụ thay thế đơn giản với
replace()
. - Ứng dụng Regex: Học cách dùng biểu thức chính quy và flags cho thay thế nâng cao.
- Hàm callback: Trình bày phương pháp thay thế động và ví dụ ứng dụng.
- Ví dụ thực tế: Giới thiệu kỹ thuật hữu ích như xử lý URL, sanitize dữ liệu.
- Best Practices: Giải thích chi tiết về lưu ý và tối ưu hiệu suất.
Lời kết
Phương thứcreplace()
trong JavaScript là một công cụ tiện lợi có thể áp dụng từ cơ bản đến nâng cao. Trong tương lai, chúng tôi sẽ tiếp tục mang đến nhiều thông tin hữu ích về JavaScript. Hãy đón chờ!広告