JavaScript có replace()
phương thức của đối tượng String để thay thế các chuỗi con. Phương pháp này có thể có hai đối số. Đối số đầu tiên có thể là một chuỗi hoặc một mẫu biểu thức chính quy (đối tượng regExp) và đối số thứ hai có thể là một chuỗi hoặc một hàm. Một ví dụ về replace()
phương thức có cả hai đối số chuỗi được hiển thị bên dưới.
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text) //ten, two, three, one, five, one
Lưu ý rằng nếu đối số đầu tiên là chuỗi, chỉ có sự xuất hiện đầu tiên của chuỗi con được thay thế như trong ví dụ trên. Để thay thế tất cả các lần xuất hiện của chuỗi con, bạn cần cung cấp biểu thức chính quy bằng g
cờ (toàn cầu). Nếu bạn không cung cấp cờ toàn cầu, chỉ có sự xuất hiện đầu tiên của chuỗi con sẽ được thay thế ngay cả khi bạn cung cấp biểu thức chính quy làm đối số đầu tiên. Vì vậy, hãy thay thế tất cả các lần xuất hiện one
trong ví dụ trên.
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text) //ten, two, three, ten, five, ten
Lưu ý rằng bạn không gói mẫu biểu thức chính quy trong dấu ngoặc kép sẽ làm cho nó thành một chuỗi không phải là đối tượng regExp. Để thực hiện thay thế không phân biệt chữ hoa chữ thường, bạn cần cung cấp thêm cờ i
làm cho mẫu không phân biệt chữ hoa chữ thường. Trong trường hợp đó, biểu thức chính quy ở trên sẽ là /one/gi
. Chú ý i
cờ được thêm vào đây.
Nếu đối số thứ hai có hàm và nếu có khớp thì hàm được truyền với ba đối số. Các đối số mà hàm nhận được là khớp, vị trí của khớp và văn bản gốc. Bạn cần trả lại những gì phù hợp nên được thay thế bằng. Ví dụ,
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text) //ten, two, three, ten, five, ten
Bạn có thể có nhiều quyền kiểm soát hơn đối với văn bản thay thế bằng cách sử dụng hàm làm đối số thứ hai.
str_replace
cũng chấp nhận hai mảng có cùng độ dài, trong đó mỗi chuỗi trong mảng đầu tiên được thay thế bằng chuỗi trong mảng thứ hai trong cùng một chỉ mục. Vui lòng xem stackoverflow.com/a/5069776/296430 để biết chức năng chính xác duy nhất mà tôi đã tìm thấy cho đến nay bắt chước hành vi chính xác này trong javascript.