127 votes

Insensible à la casse remplacer tout

Je recherche toute implémentation de fonction de remplacement insensible à la casse. Par exemple, cela devrait fonctionner comme ceci :

 'This iS IIS'.replaceAll('is', 'as');

et le résultat doit être :

 'Thas as Ias'

Des idées?

METTRE À JOUR:

Ce serait génial de l'utiliser avec la variable:

 var searchStr = 'is';
'This iS IIS'.replaceAll(searchStr, 'as');

217voto

Chandu Points 40028

Essayez l'expression régulière :

 'This iS IIS'.replace(/is/ig, 'as');

Exemple de travail : http://jsfiddle.net/9xAse/

par exemple: Utilisation de l'objet RegExp :

 var searchMask = "is";
var regEx = new RegExp(searchMask, "ig");
var replaceMask = "as";

var result = 'This iS IIS'.replace(regEx, replaceMask);

79voto

Benjammin' Points 1057
String.prototype.replaceAll = function(strReplace, strWith) {
    // See http://stackoverflow.com/a/3561711/556609
    var esc = strReplace.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    var reg = new RegExp(esc, 'ig');
    return this.replace(reg, strWith);
};

Cela implémente exactement l'exemple que vous avez fourni.

 'This iS IIS'.replaceAll('is', 'as');

Retour

 'Thas as Ias'

13voto

Paul Points 503

Lorsque vous utilisez la solution regex, vous pouvez rencontrer des problèmes si votre chaîne de remplacement contient par exemple "?". Vous devez donc échapper à tous les caractères regex ou utiliser par exemple :

 String.replacei = String.prototype.replacei = function (rep, rby) {
    var pos = this.toLowerCase().indexOf(rep.toLowerCase());
    return pos == -1 ? this : this.substr(0, pos) + rby + this.substr(pos + rep.length);
};

cela ne changera pas toutes les occurrences de 'is' dans la chaîne. Par conséquent, vous pouvez écrire une boucle while dans la fonction.

1voto

Daniel A. White Points 91889

Utilisez une expression régulière.

 'This iS IIS'.replace(/is/ig, 'as')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X