web-dev-qa-db-fra.com

comment supprimer les caractères entre parenthèses dans la chaîne (Java)

Je souhaite supprimer tout type de caractère entre crochets (exemple: [], (), {}) dans une chaîne à l'aide de Java.

J'ai essayé d'utiliser ce code:

String test = "watching tv (at home)"; 
test = test.replaceAll("(","");
test = test.replaceAll(")","");

Mais ça ne marche pas, aidez-moi s'il vous plaît.

9

Pour supprimer tous les signes de ponctuation qui incluent tous les crochets, les accolades et les crochets carrés,

String test = "watching tv (at home)"; 
test = test.replaceAll("\\p{P}","");
17
StackFlowed

Le premier argument de replaceAll prend une expression régulière. 

Tous les crochets ont une signification dans les expressions rationnelles: les crochets sont utilisés dans les expressions rationnelles pour faire référence à groupes capturés , Les crochets sont utilisés pour character class et les accolades sont utilisés pour l'occurrence des caractères correspondants. Par conséquent, ils doivent tous être échappés ... Cependant, ici, les caractères peuvent simplement être enfermés dans une classe de caractères avec juste l'échappement requis pour les crochets

test = test.replaceAll("[\\[\\](){}]","");
21
Reimeus

Le premier argument transmis à la méthode replaceAll() doit être une expression régulière. Si vous voulez faire correspondre ces crochets littéraux, vous devez échapper à \\(, \\) à eux.

Vous pouvez utiliser ce qui suit pour supprimer les caractères entre crochets. La propriété Unicode \p{Ps} correspond à tout type de crochet ouvrant et La propriété Unicode \p{Pe} correspond à tout type de crochet fermant.

String test = "watching tv (at home) or [at school] or {at work}()[]{}";
test = test.replaceAll("[\\p{Ps}\\p{Pe}]", "");
System.out.println(test); //=> "watching tv at home or at school or at work"
4
hwnd

Vous devez sortir du support car il sera traité comme une regex

String test = "watching tv (at home)"; 
test = test.replaceAll("\\(","");
test = test.replaceAll("\\)","");

Aussi pour supprimer tous les supports essayez

String test = "watching tv (at home)"; 
test = test.replaceAll("[\\(\\)\\[\\]\\{\\}]","");
2
AbstractChaos

Vous pouvez utiliser String.replace au lieu de String.replaceAll pour une meilleure performance , car il recherche la séquence exacte et n'a pas besoin d'expressions régulières.

String test = "watching tv (at home)"; 
test = test.replace("(", " ");
test = test.replace(")", " ");
test = test.replace("[", " ");
test = test.replace("]", " ");
test = test.replace("{", " ");
test = test.replace("}", " ");

Si vous travaillez avec des textes, je vous recommande de remplacer les crochets par un espace vide pour éviter que les mots ne se rejoignent: watching tv(at home) -> watching tvat home 

2
Javi Fernández

subject = StringUtils.substringBetween (subject, "[", "]")

0
Santhosh Hirekerur