Cách thay thế tất cả chuỗi trong javascript

Trong đoạn mã này, chúng tôi sẽ hướng dẫn bạn tìm hiểu cách thích hợp để thay thế tất cả các lần xuất hiện của một chuỗi trong JavaScript

Nói chung, hàm thay thế () trong JavaScript được sử dụng để thay thế

Hãy bắt đầu từ cách đơn giản nhất. kết hợp hàm thay thế () với biểu thức chính quy (regrec)

Regexp sau thực hiện thay thế phân biệt chữ hoa chữ thường

String.replace(//g, '')

Trong ví dụ tiếp theo, tất cả các lần xuất hiện của từ “động vật” được thay thế bằng cụm từ chuỗi

Cách thay thế tất cả chuỗi trong javascript
Ví dụ chuỗi con Javascript

cụm từ const = 'Tôi yêu động vật. Động vật rất dễ thương' const tước = cụm từ. bảng điều khiển thay thế (/ động vật/g, ''). log(stripped) //"Tôi yêu. Động vật thật dễ thương"

Để thực hiện thay thế không phân biệt chữ hoa chữ thường, bạn cần sử dụng tùy chọn gi trong biểu thức chính quy, như sau

String.replace(//gi, '')

Ví dụ trông như thế này

Cách thay thế tất cả chuỗi trong javascript
Triển khai biểu thức chính quy Javascript

cụm từ const = 'Tôi yêu động vật. Động vật rất dễ thương' const tước = cụm từ. bảng điều khiển thay thế (/ động vật/gi, ''). log(stripped) //"Tôi yêu. thật dễ thương"

Vui lòng lưu ý rằng trong trường hợp có các ký tự đặc biệt bên trong chuỗi, nó có thể không hoạt động tốt với các biểu thức chính quy. Đó là lý do tại sao chúng tôi khuyên bạn nên bỏ qua chuỗi bằng cách áp dụng chức năng sau

const outputRegExp = (string) => {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
}

Ngoài ra còn có một giải pháp thay thế. sử dụng hai hàm JavaScript. Mặc dù giải pháp này chậm hơn regex, nhưng nó cũng có thể khá tiện dụng

Hàm đầu tiên là split() được nhắm mục tiêu cắt ngắn một chuỗi khi tìm thấy một mẫu và trả về một mảng có mã thông báo, như sau

Cách thay thế tất cả chuỗi trong javascript
Phân tách regex Javascript

cụm từ const = 'Tôi yêu động vật. Động vật thật dễ thương'; . split('con vật'); . nhật ký (mã thông báo); . Động vật thật tuyệt"]

Sau đó, bạn cần nối các mã thông báo trong một chuỗi mới mà không cần sự trợ giúp của dấu tách

const stripped = tokens.join('') //"I love ! Animals are great"

Khi bạn cung cấp chuỗi làm đối số đầu tiên của hàm thay thế, nó chỉ thay thế những lần xuất hiện đầu tiên của chuỗi. Sử dụng thông tin đó, bạn có thể tạo một hàm đệ quy đi qua toàn bộ chuỗi để điều tra và thay thế nó cho đến khi các kết quả khớp tổng thể được thay thế

Việc thay thế tất cả các kết quả khớp bằng tìm kiếm phân biệt chữ hoa chữ thường được thể hiện tại đây

String.prototype.replaceAll = function (searchString, replaceString) {
  var str = this;
  // there are no matches in string?
  if (str.indexOf(searchString) === -1) {
    // return string
    return str;
  }
  // replace and remove the first match, and perform another recursive search/replace
  return (str.replace(searchString, replaceString)).replaceAll(searchString, replaceString);
}
// usage:
str.replaceAll('welcome', 'hello');

// output: hello world! hello people! Welcome hello!

Vì vậy, thay thế tất cả các lần xuất hiện chuỗi JavaScript không phải là một công việc dễ dàng. Thật không may, không thể tạo nhanh các biểu thức chính quy từ một chuỗi trong thời gian chạy, vì bạn cần thoát khỏi các ký tự đặc biệt của biểu thức chính quy. Hơn nữa, thật khó để xử lý một biểu thức chính quy để thay thế các chuỗi đơn giản

May mắn thay, có Chuỗi tồn tại. nguyên mẫu. replaceAll(), có thể thay thế tất cả các lần xuất hiện chuỗi một cách đơn giản. Do đó, về cơ bản chúng tôi khuyên bạn nên dựa vào phương pháp này

Để thay thế một chuỗi trong JavaScript, bạn có thể sử dụng hàm replaceAll(). Đối số đầu tiên là một biểu thức/mẫu hoặc chuỗi chính quy xác định những gì cần được thay thế. Đối số thứ hai có thể là một chuỗi thay thế hoặc một hàm sẽ được gọi để tạo thay thế

Hãy nhớ rằng replaceAll() là một bổ sung tương đối mới cho JavaScript, được giới thiệu như một phần của ES2021. Hỗ trợ cho String.prototype.replaceAll() đã được giới thiệu trong Chrome 85 (tháng 8 năm 2020) và Node. js 15

Kể từ năm 2022, chúng tôi khuyên bạn không nên sử dụng replaceAll() do hỗ trợ hạn chế. Thay vào đó, hãy sử dụng String.prototype.replace() với biểu thức chính quy

Sử dụng biểu thức chính quy

Bạn có thể sử dụng biểu thức chính quy thay cho chuỗi nếu bạn muốn bao gồm nhiều trường hợp hơn về những gì cần thay thế. Điều quan trọng là không phải biểu thức chính quy của bạn phải bật cờ

String.replace(//gi, '')
0. Nếu không, JavaScript sẽ ném một
String.replace(//gi, '')
1

Sử dụng một chức năng

Hàm được gọi chạy cho mọi trận đấu mà nó tìm thấy. JavaScript gọi hàm với các tham số bên dưới

  1. khớp, chức năng tìm thấy phù hợp với tiêu chí tìm kiếm
  2. pN/$N, trong đó N là chuỗi thứ n được tìm thấy bởi một nhóm chụp được đặt trong ngoặc đơn. Vì vậy, ví dụ
    String.replace(//gi, '')
    2 có hai
  3. offset, nơi tìm thấy kết quả khớp trong chuỗi
  4. chuỗi, chuỗi đang được kiểm tra

Tuy nhiên, khi chạy ví dụ này,

String.replace(//gi, '')
3 trả về không xác định. Có thể là tham số không còn được hỗ trợ

Khi replaceAll() được gọi bằng một chuỗi, JavaScript sẽ gọi hàm thay thế với 3 đối số bên dưới

Bạn sẽ thay thế tất cả các lần xuất hiện của một chuỗi trong JavaScript như thế nào?

Trả lời. Sử dụng phương thức thay thế() của JavaScript .

Thay thế (/g trong JavaScript là gì?

Chữ "g" đại diện cho "công cụ sửa đổi toàn cục". Điều này có nghĩa là chuỗi thay thế của bạn sẽ thay thế tất cả các bản sao của chuỗi trùng khớp bằng chuỗi thay thế mà bạn cung cấp .

Đâu là sự khác biệt giữa Replace() và replaceAll()?

Phương thức replaceAll() tương tự như String. phương thức thay thếFirst(). Sự khác biệt duy nhất giữa chúng là nó thay thế chuỗi con bằng chuỗi đã cho cho tất cả các lần xuất hiện trong chuỗi .

Tại sao thay thế tất cả không hoạt động trong JavaScript?

Lỗi "replaceAll" không phải là lỗi hàm xảy ra khi chúng ta gọi phương thức replaceAll() trên một giá trị không phải là kiểu chuỗi hoặc trong một trình duyệt không . Để giải quyết lỗi, chỉ gọi phương thức replaceAll() trên các chuỗi trong các trình duyệt được hỗ trợ. . To solve the error, only call the replaceAll() method on strings in supported browsers.