La fonction de remplacement est l’un des prototypes de chaîne les plus utilisés en Javascript. Il vous permet de remplacer la première occurrence d’une sous-chaîne spécifique par ce que vous voulez. Si vous devez remplacer toutes les instances de cette sous-chaîne, vous serez peut-être enclin à utiliser une autre fonction appelée remplace tout. C’est, bien sûr, si vous êtes dans l’environnement NodeJS où la fonction peut ne pas fonctionner. Prenons un exemple et voyons ce qui se passe.
let input = "00aa00bb00cc00dd"
let output = input.replaceAll('00', '');
console.log(output)
//OUTPUT
//TypeError: input.replaceAll is not a function
Le code ci-dessus fonctionne parfaitement sur tous les principaux navigateurs (sauf Internet Explorer). Cependant, lorsque vous essayez de l’utiliser dans un environnement NodeJS version 14 ou inférieure, il vous crie dessus, disant que replaceAll n’est pas une fonction. Alors qu’est-ce qui donne ? Dans NodeJS, “replaceAll” n’est pas un prototype de chaîne natif (inférieur à la version 15 de Node). Par conséquent, vous obtenez l’erreur ci-dessus. Jetons un coup d’œil à quelques alternatives ci-dessous.
Comment remplacer tout dans Node JS
La remplace tout est disponible dans les versions 15 et ultérieures de Node. Si vous obtenez une erreur, vous utilisez probablement une ancienne version de Node. Une option consiste à mettre à niveau votre environnement Node. Cependant, une autre alternative à “replaceAll” dans Node JS est la fonction standard “replace” avec une expression régulière. Voyons comment l’utiliser et comment nous pouvons ajouter notre propre fonction replaceAll pour une utilisation répétitive.
Solution 1 – Utiliser remplacer par regex
La remplacer Le prototype de chaîne nous permettra de remplacer la première occurrence d’une chaîne dans une autre chaîne. Cependant, nous pouvons également alimenter la fonction de remplacement avec une expression régulière. Prenons un exemple.
let input = "00aa00bb00cc00dd"
let output = input.replace(/00/g,'')
console.log(output)
//OUTPUT
//aabbccdd
Notre chaîne cible est placée entre deux barres obliques suivies du g drapeau pour compléter la regex. Si vous supprimez le drapeau g, l’expression régulière remplacera à nouveau la première occurrence.
Solution 2 – Créez votre propre prototype replaceAll
Dans l’exemple suivant, nous allons ajouter une nouvelle méthode au prototype String. Cela nous permettra d’utiliser la fonction replaceAll sur n’importe quelle chaîne de notre code.
String.prototype.replaceAll = function (target, payload) {
let regex = new RegExp(target, 'g')
return this.valueOf().replace(regex, payload)
};
let input = "00aa00bb00cc00dd"
let output = input.replaceAll('00', '');
console.log(output)
//OUTPUT
//aabbccdd
Dans notre prototype replaceAll, nous utilisons la fonction standard replace avec une expression régulière de solution 1.
Solution 3 – Mise à jour vers le nœud 15+
Selon la configuration de vos environnements de développement et de production, la solution la plus simple peut être de mettre à jour votre version de Node vers la version 15 ou supérieure. Ceci, bien sûr, pourrait potentiellement causer d’autres problèmes dans d’autres parties de votre code. C’est toujours une bonne idée d’installer Node à l’aide d’un gestionnaire de version tel que NVM (Node Vversion Manager). De cette façon, vous pouvez facilement installer une version actuelle de Node mais revenir en arrière si nécessaire. Cela vous permettra également de mieux correspondre à votre environnement de production final.
Nous espérons que vous avez trouvé ce guide utile. Pour des tutoriels Node plus utiles, veuillez consulter notre section Javascript.