Entrée = ABCDEF ((3) abcdef),GHIJKLMN ((4)(5) Value),OPQRSTUVW((4(5)) Value (3))
Sortie attendue = ABCDEF,GHIJKLMN,OPQRSTUVW
Essayé jusqu'à présent
Output = Input.replace(/ *\([^)]*\)*/g, "");
Entrée = ABCDEF ((3) abcdef),GHIJKLMN ((4)(5) Value),OPQRSTUVW((4(5)) Value (3))
Sortie attendue = ABCDEF,GHIJKLMN,OPQRSTUVW
Essayé jusqu'à présent
Output = Input.replace(/ *\([^)]*\)*/g, "");
Utiliser une regex ici ne fonctionnera probablement pas, ou n'évoluera pas, car vous vous attendez à des parenthèses imbriquées dans votre chaîne d'entrée. Les regex fonctionnent bien lorsqu'il y a une structure connue et fixe en entrée. Je vous recommande plutôt d'aborder cela en utilisant un parseur. Dans le code ci-dessous, je parcours la chaîne d'entrée, caractère par caractère, et j'utilise un compteur pour suivre le nombre de parenthèses ouvertes. Si nous sommes à l'intérieur d'un terme de parenthèses, alors nous n'enregistrons pas ces caractères. J'ai également un remplacement simple à la fin pour supprimer les espaces, ce qui est une étape supplémentaire que votre production implique, mais que vous n'avez jamais mentionnée explicitement.
var pCount = 0;
var Input = "ABCDEF ((3) abcdef),GHIJKLMN ((4)(5) Value),OPQRSTUVW((4(5)) Value (3))";
var Output = "";
for (var i=0; i < Input.length; i++) {
if (Input[i] === '(') {
pCount++;
}
else if (Input[i] === ')') {
pCount--;
}
else if (pCount == 0) {
Output += Input[i];
}
}
Output = Output.replace(/ /g,'');
console.log(Output);
Si vous avez besoin de supprimer les parenthèses imbriquées, vous pouvez utiliser une astuce de Remove Nested Patterns with One Line of JavaScript.
var Input = "ABCDEF ((3) abcdef),GHIJKLMN ((4)(5) Value),OPQRSTUVW((4(5)) Value (3))";
var Output = Input;
while (Output != (Output = Output.replace(/\s*\([^()]*\)/g, "")));
console.log(Output);
Ici, \s*\([^()]*\)
correspond à 0+ espaces, (
, 0+ caractères autres que (
et )
, puis un )
, et l'opération de remplacement est répétée jusqu'à ce que la chaîne ne change pas.
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.