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.
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}","");
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("[\\[\\](){}]","");
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"
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("[\\(\\)\\[\\]\\{\\}]","");
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
subject = StringUtils.substringBetween (subject, "[", "]")