Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

Tôi đang cố gắng thay thế nhiều từ trong một chuỗi bằng nhiều từ khác. Chuỗi là "Tôi có một con mèo, một con chó và một con dê."

Tuy nhiên, điều này không tạo ra "Tôi có một con chó, một con dê và một con mèo", mà thay vào đó nó tạo ra "Tôi có một con mèo, một con mèo và một con mèo". Có thể thay thế nhiều chuỗi bằng nhiều chuỗi khác cùng một lúc trong JavaScript, để kết quả chính xác sẽ được tạo ra?

var str = "I have a cat, a dog, and a goat.";
str = str.replace(/cat/gi, "dog");
str = str.replace(/dog/gi, "goat");
str = str.replace(/goat/gi, "cat");

//this produces "I have a cat, a cat, and a cat"
//but I wanted to produce the string "I have a dog, a goat, and a cat".

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

KARTHIKEYAN.A

15.9k5 Huy hiệu vàng109 Huy hiệu bạc124 Huy hiệu đồng5 gold badges109 silver badges124 bronze badges

Đã hỏi ngày 24 tháng 3 năm 2013 lúc 21:19Mar 24, 2013 at 21:19

Anderson Greenanderson GreenAnderson Green

28.7K65 Huy hiệu vàng186 Huy hiệu bạc319 Huy hiệu đồng65 gold badges186 silver badges319 bronze badges

6

Giải pháp cụ thể

Bạn có thể sử dụng một chức năng để thay thế từng chức năng.

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});

Ví dụ về JSfiddle

Khái quát nó

Nếu bạn muốn tự động duy trì regex và chỉ cần thêm các trao đổi trong tương lai vào bản đồ, bạn có thể làm điều này

new RegExp(Object.keys(mapObj).join("|"),"gi"); 

để tạo ra regex. Vì vậy, sau đó nó sẽ trông như thế này

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});

Và để thêm hoặc thay đổi bất kỳ thay thế nào nữa, bạn chỉ có thể chỉnh sửa bản đồ. & Nbsp;

fiddle với regex động

Làm cho nó có thể tái sử dụng

Nếu bạn muốn đây là một mẫu chung, bạn có thể kéo nó ra một chức năng như thế này

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}

Vì vậy, sau đó bạn chỉ có thể vượt qua STR và bản đồ của các thay thế bạn muốn cho chức năng và nó sẽ trả về chuỗi được chuyển đổi.

Fiddle với chức năng

Để đảm bảo Object.keys hoạt động trong các trình duyệt cũ hơn, hãy thêm polyfill, ví dụ từ MDN hoặc ES5.

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

Đã trả lời ngày 24 tháng 3 năm 2013 lúc 21:26Mar 24, 2013 at 21:26

Ben McCormickben McCormickBen McCormick

24.8K12 Huy hiệu vàng 50 Huy hiệu bạc71 Huy hiệu đồng12 gold badges50 silver badges71 bronze badges

17

Như một câu trả lời cho:

Tìm kiếm một câu trả lời cập nhật

Nếu bạn đang sử dụng "các từ" như trong ví dụ hiện tại của mình, bạn có thể mở rộng câu trả lời của Ben McCormick bằng cách sử dụng một nhóm không bắt và thêm ranh giới từ

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
2 ở bên trái và bên phải để ngăn chặn các kết quả phù hợp một phần.

\b(?:cathy|cat|catch)\b
  • function replaceAll(str,mapObj){
        var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
    
        return str.replace(re, function(matched){
            return mapObj[matched.toLowerCase()];
        });
    }
    
    2 Một ranh giới từ để ngăn chặn một phần kết hợp
  • function replaceAll(str,mapObj){
        var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
    
        return str.replace(re, function(matched){
            return mapObj[matched.toLowerCase()];
        });
    }
    
    4 Nhóm không bắt giữ
    • function replaceAll(str,mapObj){
          var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
      
          return str.replace(re, function(matched){
              return mapObj[matched.toLowerCase()];
          });
      }
      
      5 khớp một trong những lựa chọn thay thế
  • function replaceAll(str,mapObj){
        var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
    
        return str.replace(re, function(matched){
            return mapObj[matched.toLowerCase()];
        });
    }
    
    6 Đóng nhóm không bắt giữ
  • function replaceAll(str,mapObj){
        var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
    
        return str.replace(re, function(matched){
            return mapObj[matched.toLowerCase()];
        });
    }
    
    2 Một ranh giới từ để ngăn chặn một phần kết hợp

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
4 Nhóm không bắt giữ

let str = "I have a cat, a dog, and a goat.";
const mapObj = {
  cat: "dog",
  dog: "goat",
  goat: "cat"
};
str = str.replace(/\b(?:cat|dog|goat)\b/gi, matched => mapObj[matched]);
console.log(str);

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
5 khớp một trong những lựa chọn thay thế

let str = "I have a cat, a catch, and a cathy.";
const mapObj = {
  cathy: "cat",
  cat: "catch",
  catch: "cathy"

};
str = str.replace(/\b(?:cathy|cat|catch)\b/gi, matched => mapObj[matched]);
console.log(str);

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
6 Đóng nhóm không bắt giữMay 3, 2021 at 19:24

Ví dụ cho câu hỏi ban đầu:The fourth bird

Ví dụ cho ví dụ trong các nhận xét dường như không hoạt động tốt:16 gold badges46 silver badges65 bronze badges

2

Đã trả lời ngày 3 tháng 5 năm 2021 lúc 19:24

let str = "I have a %1, a %2, and a %3";
let pets = ["dog","cat", "goat"];

Con chim thứ tư

str.replace(/%(\d+)/g, (_, n) => pets[+n-1])

Phù bằng vàng 141K1646 Huy hiệu bạc65 Huy hiệu Đồng

Sử dụng các mục được đánh số để tránh thay thế lại. ví dụ

sau đó

Cách thức hoạt động:- %\ D+ tìm thấy các số xuất hiện sau một %. Các dấu ngoặc chụp số.

Số này (dưới dạng chuỗi) là tham số thứ 2, n, cho hàm Lambda.

+N-1 chuyển đổi chuỗi thành số thì 1 được trừ để lập chỉ mục mảng vật nuôi.

Số %sau đó được thay thế bằng chuỗi ở chỉ mục mảng.

/G khiến hàm lambda được gọi nhiều lần với mỗi số sau đó được thay thế bằng một chuỗi từ mảng.May 18, 2018 at 12:39

2

Trong JavaScript hiện đại:-

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
1

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
0

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
2

Đã trả lời ngày 18 tháng 5 năm 2018 lúc 12:39Mar 24, 2013 at 23:59

Điều này có thể không đáp ứng chính xác nhu cầu của bạn trong trường hợp này, nhưng tôi đã tìm thấy đây là một cách hữu ích để thay thế nhiều tham số trong chuỗi, như một giải pháp chung. Nó sẽ thay thế tất cả các trường hợp của các tham số, bất kể chúng được tham chiếu bao nhiêu lần:Iian

Bạn sẽ gọi nó như sau:9 bronze badges

1

Đã trả lời ngày 24 tháng 3 năm 2013 lúc 23:59

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
3

Iianiian

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
4

Phù hiệu đồng 1959Jun 18, 2019 at 3:07

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

Sử dụng Array.Prototype.Reduce ():Emmanuel N K

Thí dụ1 gold badge26 silver badges34 bronze badges

2

Đã trả lời ngày 18 tháng 6 năm 2019 lúc 3:07

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
5

Emmanuel n Kemmanuel N KFeb 16, 2016 at 11:50

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

6,8041 Huy hiệu vàng26 Huy hiệu bạc34 Huy hiệu đồngJoão Paulo

Điều này làm việc cho tôi:4 gold badges45 silver badges76 bronze badges

3

Đã trả lời ngày 16 tháng 2 năm 2016 lúc 11:50

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
6

João Paulojoão PauloMar 4, 2018 at 18:14

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

5.9404 Huy hiệu vàng45 Huy hiệu bạc76 Huy hiệu đồngKodie Grantham

Với gói thay thế của tôi, bạn có thể làm như sau:2 gold badges17 silver badges25 bronze badges

3

NOTE!

Đã trả lời ngày 4 tháng 3 năm 2018 lúc 18:14

Kodie Granthamkodie Grantham

  1. 1.8862 huy hiệu vàng17 Huy hiệu bạc25 Huy hiệu đồng

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
7

  1. Nếu bạn đang sử dụng ánh xạ được cung cấp động, không có giải pháp nào ở đây là đủ!

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
8

Trong trường hợp này, có hai cách để giải quyết vấn đề này, (1) sử dụng kỹ thuật chia tách, (2) sử dụng Regex với kỹ thuật thoát khỏi ký tự đặc biệt.

Đây là một kỹ thuật chia tách, nhanh hơn nhiều so với kỹ thuật khác (ít nhất là nhanh hơn 50%):Apr 30, 2021 at 17:13

Đây là kỹ thuật thoát khỏi nhân vật đặc biệt Regex, cũng hoạt động, nhưng chậm hơn nhiều:Slavik Meltser

Ưu điểm của cái sau, là nó cũng có thể hoạt động với tìm kiếm không nhạy cảm trường hợp.3 gold badges44 silver badges46 bronze badges

6

Đã trả lời ngày 30 tháng 4 năm 2021 lúc 17:13

var str = "I have a cat, a dog, and a goat.";
var mapObj = {
   cat:"dog",
   dog:"goat",
   goat:"cat"
};
str = str.replace(/cat|dog|goat/gi, function(matched){
  return mapObj[matched];
});
9

Slavik Meltserslavik MeltserJul 3, 2017 at 10:58

9.0243 huy hiệu vàng44 Huy hiệu bạc46 Huy hiệu đồngjack

Chỉ trong trường hợp ai đó đang tự hỏi tại sao giải pháp áp phích ban đầu không hoạt động:6 silver badges20 bronze badges

0

Đã trả lời ngày 3 tháng 7 năm 2017 lúc 10:58

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
0

kiểm traMay 6, 2021 at 19:02

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

1.3716 huy hiệu bạc20 Huy hiệu đồngwhole words - so for example, "catch", "ducat" or "locator" wouldn't be found when searching for "cat". This can be done by using negative lookbehind

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
8 and negative lookahead
function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
9 on word characters before and after each word in the regular expression:

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
1

Demo jsfiddle: http://jsfiddle.net/mfkv9r8g/1/

Đã trả lời ngày 4 tháng 5 năm 2021 lúc 8:40May 4, 2021 at 8:40

Chamberssteve ChamberssteveSteve Chambers

Phù hiệu vàng 35K20 Huy hiệu bạc196 Huy hiệu Đồng20 gold badges150 silver badges196 bronze badges

2

Hãy thử giải pháp của tôi. Hãy cải thiện

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
2

Đã trả lời ngày 2 tháng 7 năm 2021 lúc 4:36Jul 2, 2021 at 4:36

Bạn có thể tìm và thay thế chuỗi bằng cách sử dụng Delimiter.

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
3

Đã trả lời ngày 14 tháng 11 năm 2019 lúc 17:40Nov 14, 2019 at 17:40

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

2

Chức năng thường xuyên của người dùng để xác định mẫu để thay thế và sau đó sử dụng chức năng thay thế để hoạt động trên chuỗi đầu vào,

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
4

Đã trả lời ngày 18 tháng 8 năm 2017 lúc 7:08Aug 18, 2017 at 7:08

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

KARTHIKEYAN.AKARTHIKEYAN.AKARTHIKEYAN.A

15.9k5 Huy hiệu vàng109 Huy hiệu bạc124 Huy hiệu đồng5 gold badges109 silver badges124 bronze badges

3

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
5

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

Đã trả lời ngày 17 tháng 6 năm 2019 lúc 13:10Jun 17, 2019 at 13:10

1

  • Tôi đã sửa đổi câu trả lời của Ben McCormick để làm việc với trường hợp thử nghiệm mới của bạn.
  • Tôi chỉ cần thêm ranh giới từ vào biểu thức thông thường:
new RegExp(Object.keys(mapObj).join("|"),"gi"); 
6

"Chạy mã mã" để xem kết quả dưới đây:

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
7

Đã trả lời ngày 1 tháng 5 năm 2021 lúc 2:15May 1, 2021 at 2:15

Bên tráiLeftium

Phù bằng vàng 14,9k657 Huy hiệu bạc89 Huy hiệu đồng6 gold badges57 silver badges89 bronze badges

3

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
8

Đã trả lời ngày 14 tháng 12 năm 2021 lúc 10:16Dec 14, 2021 at 10:16

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

new RegExp(Object.keys(mapObj).join("|"),"gi"); 
9

.

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
0

*/

JSfiddle: http://jsfiddle.net/cpj89/

Đã trả lời ngày 1 tháng 12 năm 2013 lúc 13:34Dec 1, 2013 at 13:34

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

1

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
1

Đã trả lời ngày 13 tháng 8 năm 2016 lúc 10:42Aug 13, 2016 at 10:42

Tôi đã viết gói npm này chuỗi chuỗi https://www.npmjs.com/package/stringinject cho phép bạn thực hiện các hoạt động sau

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
2

sẽ thay thế {0} và {1} bằng các mục mảng và trả về chuỗi sau

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
3

Hoặc bạn có thể thay thế các khoản giữ chỗ bằng các khóa và giá trị đối tượng như vậy:

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
4

Đã trả lời ngày 19 tháng 7 năm 2017 lúc 16:06Jul 19, 2017 at 16:06

TJCafferKeyTjcafferkeytjcafferkey

3802 Huy hiệu bạc12 Huy hiệu Đồng2 silver badges12 bronze badges

Bạn có thể sử dụng https://www.npmjs.com/package/union-replacer cho mục đích này. Về cơ bản, nó là một đối tác

\b(?:cathy|cat|catch)\b
0, cho phép nhiều thay thế xảy ra trong một lần vượt qua trong khi bảo toàn toàn bộ sức mạnh của
\b(?:cathy|cat|catch)\b
1.

Tiết lộ: Tôi là tác giả. Thư viện được phát triển để hỗ trợ các thay thế có thể định cấu hình người dùng phức tạp hơn và nó giải quyết tất cả các điều có vấn đề như các nhóm bắt giữ, các bản sao lưu và thay thế chức năng gọi lại.

Các giải pháp ở trên là đủ tốt để thay thế chuỗi chính xác mặc dù.

Đã trả lời ngày 16 tháng 11 năm 2019 lúc 15:19Nov 16, 2019 at 15:19

Hướng dẫn how to replace more than one word in a string in javascript? - làm thế nào để thay thế nhiều hơn một từ trong một chuỗi trong javascript?

Bằng cách sử dụng hàm nguyên mẫu, chúng ta có thể dễ dàng thay thế bằng cách truyền đối tượng bằng các khóa và giá trị và văn bản có thể thay thế

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
5

Nolequen

2.5866 huy hiệu vàng35 huy hiệu bạc51 huy hiệu đồng6 gold badges35 silver badges51 bronze badges

Đã trả lời ngày 2 tháng 7 năm 2020 lúc 9:31Jul 2, 2020 at 9:31

Tất cả các giải pháp hoạt động rất tốt, ngoại trừ khi được áp dụng trong các ngôn ngữ lập trình đóng cửa (ví dụ: coda, excel, bảng tính của

\b(?:cathy|cat|catch)\b
2).

Hai giải pháp ban đầu của tôi dưới đây chỉ sử dụng 1 lần nối và 1 regex.

Phương pháp số 1: Tra cứu các giá trị thay thế

Ý tưởng là nối thêm các giá trị thay thế nếu chúng chưa có trong chuỗi. Sau đó, bằng cách sử dụng một regex duy nhất, chúng tôi thực hiện tất cả các thay thế cần thiết:

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
6

Explanations:

  • \b(?:cathy|cat|catch)\b
    
    3 có nghĩa là chúng tôi tìm kiếm "con mèo". Nếu nó phù hợp, thì việc tra cứu về phía trước sẽ bắt "con chó" là nhóm 1 và "" nếu không.
  • Tương tự đối với "con chó" sẽ bắt "dê" như nhóm 2 và "dê" sẽ bắt "con mèo" là nhóm 3.
  • Chúng tôi thay thế bằng
    \b(?:cathy|cat|catch)\b
    
    4 (sự kết hợp của cả ba nhóm), sẽ luôn là "chó", "mèo" hoặc "dê" cho một trong những trường hợp trên
  • Nếu chúng tôi được thay thế thủ công vào chuỗi như
    \b(?:cathy|cat|catch)\b
    
    5, chúng tôi sẽ loại bỏ chúng bằng cách khớp với
    \b(?:cathy|cat|catch)\b
    
    6, trong trường hợp đó thay thế
    \b(?:cathy|cat|catch)\b
    
    4 sẽ đánh giá thành "", chuỗi trống.

Phương pháp số 2: Tra cứu các cặp thay thế

Một vấn đề với Phương pháp số 1 là nó không thể vượt quá 9 thay thế tại một thời điểm, đây là số lượng tối đa của các nhóm trao đổi ngược. Phương pháp số 2 không chỉ nối các giá trị thay thế, mà thay thế trực tiếp:

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
7

Explanations:

  • \b(?:cathy|cat|catch)\b
    
    8 là cách chúng tôi nối bản đồ thay thế vào cuối chuỗi.
  • \b(?:cathy|cat|catch)\b
    
    9 tuyên bố "nắm bắt bất kỳ từ nào", có thể được thay thế bằng "(mèo | chó | dê) hoặc bất cứ điều gì khác.
  • let str = "I have a cat, a dog, and a goat.";
    const mapObj = {
      cat: "dog",
      dog: "goat",
      goat: "cat"
    };
    str = str.replace(/\b(?:cat|dog|goat)\b/gi, matched => mapObj[matched]);
    console.log(str);
    0 là một tra cứu phía trước thường sẽ đi đến cuối tài liệu cho đến sau bản đồ thay thế.
    • let str = "I have a cat, a dog, and a goat.";
      const mapObj = {
        cat: "dog",
        dog: "goat",
        goat: "cat"
      };
      str = str.replace(/\b(?:cat|dog|goat)\b/gi, matched => mapObj[matched]);
      console.log(str);
      1 có nghĩa là "Bạn nên tìm từ phù hợp giữa dấu phẩy và mũi tên phải"
    • let str = "I have a cat, a dog, and a goat.";
      const mapObj = {
        cat: "dog",
        dog: "goat",
        goat: "cat"
      };
      str = str.replace(/\b(?:cat|dog|goat)\b/gi, matched => mapObj[matched]);
      console.log(str);
      2 có nghĩa là "khớp bất cứ thứ gì sau mũi tên này cho đến khi dấu phẩy tiếp theo hoặc kết thúc của tài liệu"
  • let str = "I have a cat, a dog, and a goat.";
    const mapObj = {
      cat: "dog",
      dog: "goat",
      goat: "cat"
    };
    str = str.replace(/\b(?:cat|dog|goat)\b/gi, matched => mapObj[matched]);
    console.log(str);
    3 là cách chúng tôi loại bỏ bản đồ thay thế.

Đã trả lời ngày 31 tháng 8 năm 2020 lúc 18:33Aug 31, 2020 at 18:33

Mikaël Mayermikaël MayerMikaël Mayer

9,9885 Huy hiệu vàng61 Huy hiệu bạc101 Huy hiệu đồng5 gold badges61 silver badges101 bronze badges

Chúng ta cũng có thể sử dụng các phương thức Split () và tham gia ():

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
8

Đã trả lời ngày 3 tháng 5 năm 2021 lúc 14:22May 3, 2021 at 14:22

1

Bạn có thể thử điều này. Mua không thông minh.

var mapObj = {cat:"dog",dog:"goat",goat:"cat"};

var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
str = str.replace(re, function(matched){
  return mapObj[matched];
});
9

Ra ngoài: Tôi có một con chó, một con dê và một con mèo.

Đã trả lời ngày 7 tháng 5 năm 2021 lúc 9:57May 7, 2021 at 9:57

Tôi đã mở rộng trên @benmccormicks một chút. Anh ấy làm việc cho các chuỗi thường xuyên nhưng không phải nếu tôi đã thoát khỏi các nhân vật hoặc ký tự đại diện. Đây là những gì tôi đã làm

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
0

Returns "Blah blah 234433 blah blah"

Bằng cách này, nó sẽ khớp với khóa trong mapobj chứ không phải từ phù hợp '

Devon

9138 Huy hiệu bạc19 Huy hiệu đồng8 silver badges19 bronze badges

Đã trả lời ngày 17 tháng 11 năm 2014 lúc 16:33Nov 17, 2014 at 16:33

Drew Landgravedrew LandgraveDrew Landgrave

1.3752 Huy hiệu vàng12 Huy hiệu bạc23 Huy hiệu đồng2 gold badges12 silver badges23 bronze badges

1

Giải pháp với jQuery (đầu tiên bao gồm tệp này): Thay thế nhiều chuỗi bằng nhiều chuỗi khác:

function replaceAll(str,mapObj){
    var re = new RegExp(Object.keys(mapObj).join("|"),"gi");

    return str.replace(re, function(matched){
        return mapObj[matched.toLowerCase()];
    });
}
1

Đã trả lời ngày 16 tháng 1 năm 2018 lúc 8:08Jan 16, 2018 at 8:08

BillubilluBillu

2.35321 Huy hiệu bạc42 Huy hiệu đồng21 silver badges42 bronze badges

8

Làm cách nào để thay thế bội số trong một chuỗi?

thay thế (/cat/gi, "chó"); // Bây giờ str = "Tôi có một con chó, một con chó và một con dê." str = str. thay thế (/chó/gi, "dê"); // Bây giờ str = "Tôi có một con dê, một con dê và một con dê." str = str. thay thế (/dê/gi, "mèo"); // Bây giờ str = "Tôi có một con mèo, một con mèo và một con mèo." // now str = "I have a dog, a dog, and a goat." str = str. replace(/dog/gi, "goat"); // now str = "I have a goat, a goat, and a goat." str = str. replace(/goat/gi, "cat"); // now str = "I have a cat, a cat, and a cat."

Làm thế nào để bạn thay thế một phần nhất định của một chuỗi javascript?

thay thế () là một phương thức sẵn có trong javascript được sử dụng để thay thế một phần của chuỗi đã cho bằng một số chuỗi khác hoặc biểu thức chính quy. Chuỗi ban đầu sẽ không thay đổi. Tham số: Ở đây tham số A là biểu thức chính quy và B là một chuỗi sẽ thay thế nội dung của chuỗi đã cho. is an inbuilt method in JavaScript which is used to replace a part of the given string with some another string or a regular expression. The original string will remain unchanged. Parameters: Here the parameter A is regular expression and B is a string which will replace the content of the given string.

Làm thế nào để bạn thay thế nhiều giá trị?

Tìm và thay thế nhiều giá trị bằng cách thay thế cho cách dễ nhất để tìm và thay thế nhiều mục trong Excel là bằng cách sử dụng hàm thay thế.Logic của công thức rất đơn giản: bạn viết một vài hàm riêng lẻ để thay thế một giá trị cũ bằng một hàm mới.using the SUBSTITUTE function. The formula's logic is very simple: you write a few individual functions to replace an old value with a new one.

Làm thế nào để bạn thay thế các từ trong javascript?

Để thay thế văn bản trong chuỗi JavaScript, hàm thay thế () được sử dụng.Hàm thay thế () có hai đối số, phần phụ sẽ được thay thế và chuỗi mới sẽ diễn ra.Regex (P) cũng có thể được sử dụng để thay thế văn bản trong một chuỗi.the replace() function is used. The replace() function takes two arguments, the substring to be replaced and the new string that will take its place. Regex(p) can also be used to replace text in a string.