3
votes

Remplacer un mot dans une chaîne

Je dois remplacer le mot _Nouveau + Livraison; dans une chaîne avec virgule (',')

exemple de chaîne d'entrée: XP_New+Delivery;HP_New+Delivery;LA_New;

sortie attendue: XP,HP,LA_New;

Mais il renvoie la même entrée que la sortie, ne remplace rien par aucune idée?

<p id="demo">XP_New+Delivery;HP_New+Delivery;LA_New;</p>

<button onclick="myFunction()">Try it</button>
function myFunction() {
  var str = document.getElementById("demo").innerHTML;
  var res = str.replace(new RegExp('_New+Delivery;', 'gi'), ',');
  document.getElementById("demo").innerHTML = res;
}


2 commentaires

+ a une signification particulière dans RegExp, vous devrez l' échapper , '\ + `... ou à l'intérieur de cette chaîne, vous aurez besoin de \\+ ... donc var res = str.replace(new RegExp('_New\\+Delivery;', 'gi'), ','); ou var res = str.replace(/_New\+Delivery;/gi, ','); pour un code plus succinct


Est-ce que cela répond à votre question? Comment puis-je remplacer un signe plus dans JavaScript?


3 Réponses :


1
votes

Ce n'est peut-être pas un moyen parfait, mais cela fonctionnera.

<p id="demo">XP_New+Delivery;HP_New+Delivery;LA_New;</p>

<button onclick="myFunction()">Try it</button>

Pour votre problème, utilisez le code suivant

function myFunction() {
  var str = document.getElementById("demo").innerHTML;
  var res = str.split('_New+Delivery;').join(',');
  document.getElementById("demo").innerHTML = res;
}
const sampleInput = "XP_New+Delivery;HP_New+Delivery;LA_New;";
const result = sampleInput.split('_New+Delivery;').join(',');

console.log(result)


0 commentaires

0
votes

Essaye ça:

var str = "XP_New+Delivery;HP_New+Delivery;LA_New;";
var res = str.replace(/(_New\+Delivery;)/g, ",");

console.log(res);


0 commentaires

1
votes

Le signe plus dans l'expression régulière signifie «correspond à une heure et un nombre illimité de fois, autant de fois que possible, en redonnant au besoin». Pour utiliser le signe plus tel quel, vous devez l'échapper avec \ .

new RegExp('_New\\+Delivery;', 'gi')

Mais dans votre exemple La barre oblique inverse est interprétée par le code qui lit la chaîne, plutôt que transmise à l'analyseur d'expression régulière. Vous devez double échapper le signe plus:

new RegExp('_New\+Delivery;', 'gi')


0 commentaires