Voici l'exemple qui montre comment remplacer les mots correspondants en majuscules.
var str = "Mr Blue has a blue house and a blue car.";
var res = str.replace(/!(blue|house|car)/g, function (x) {
return x.toUpperCase();
});
console.log (res); La sortie est
M. Blue a une MAISON BLEUE et une VOITURE BLEUE.
Mais j'ai besoin des mots qui ne correspondent pas en majuscules.
MR BLUE A une maison bleue ET une voiture bleue.
J'ai essayé avec le code ci-dessous. Mais ça ne marche pas
var str = "Mr Blue has a blue house and a blue car.";
var res = str.replace(/(blue|house|car)/g, function (x) {
return x.toUpperCase();
});
3 Réponses :
Faites correspondre le début d'un mot (limite de mot, avec \ b ), anticipation négative pour ces trois mots suivis des limites de mots, puis faites correspondre les caractères du mot et utilisez votre fonction de remplacement:
var str = "Mr Blue has a blue house and a blue car.";
var res = str.replace(/\b(?!blue\b|house\b|car\b)\w+/g, function(x) {
return x.toUpperCase();
});
console.log(res);
Les limites de mots à la fin de chacun de ces trois mots sont nécessaires pour que maisons soient correctement mises en correspondance (et uniquement house , en tant que mot, ne correspondra pas).
! ne veut pas dire grand-chose dans une expression régulière, il correspondra simplement à un ! littéral, que votre chaîne ne contient nulle part.
Vous pouvez le faire sans regex. d'abord divisé sur chaque espace et ensuite vérifier s'il correspond à ces mots ou pas en conséquence changer la casse
var str = "Mr Blue has a blue house and a blue car.";
let arr = ['blue','house','car']
var res = str.split(/\b/).reduce( (op,inp) => {
if( !arr.includes(inp) ){
op += inp.toUpperCase()
} else {
op += inp
}
return op
},'')
console.log(res.trim());
car devient en majuscule, ce qui est incorrect. Causé par un point après la voiture que vous devez gérer.
@PushpeshKumarRajwanshi oh ouais. fixé. merci d'avoir souligné
Vous pouvez également diviser sur la correspondance 1+ fois un caractère de mot (\ w +) ou sur une limite de mot \ b . Ajoutez les valeurs de l'alternance à un tableau et utilisez map en combinaison avec inclut :
let str = "Mr Blue has a blue house and a blue car.";
let words = ["blue", "house", "car"];
str = str.split(/\b/g).map(x => !words.includes(x) ? x.toUpperCase() : x).join('');
console.log(str);
car devient en majuscule, ce qui est incorrect. Causé par un point après la voiture que vous devez gérer.
@PushpeshKumarRajwanshi Ha, vous avez raison, merci! Je l'ai mis à jour.