2014-09-15 1 views
7

Voglio rimuovere tutti i tipi di parentesi carattere (esempio: [],(), {}) nella stringa utilizzando java.come rimuovere il carattere di parentesi nella stringa (java)

Ho provato ad utilizzare questo codice:

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

Ma non funziona, aiutami per favore.

+0

È necessario aggiungere * \\ * prima * (* Prova questo ... prova String = "guardare tv (a casa) "; test = test.replaceAll (" \\ ("," "). replaceAll (" \\) "," "); –

risposta

10

Per rimuovere tutti i segni di punteggiatura che includono tutte le fasce, parentesi graffe e parentesi quadre ... come per la domanda è:

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

funziona bene, grazie :) –

+6

@MuhammadHaryadiFutra Attenzione questa soluzione rimuove anche simboli come '.',', ','; ', ecc. –

+0

questo non rimuove le parentesi ma anche altri caratteri come "/" e "-".ecc (16180856-04-20170407-ad/wav/D104) cambiato in 161808560420170407adwavD104 –

2

avete bisogno di sfuggire alla staffa come sarà trattata come parte di una espressione regolare

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

anche per rimuovere tutte le fasce cercano

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

' "\" ('' causerà un errore di compilazione in quanto non è un carattere di escape valido. "" \\ ("' è ciò che è necessario –

+0

@zero_dev good spot, aggiornato – AbstractChaos

18

Il primo argomento di replaceAll prende un'espressione regolare.

Tutte le staffe hanno significato in regex: parentesi quadre sono usate in regex per fare riferimento capturing groups, parentesi quadre sono utilizzate per character class & graffe vengono utilizzati per verificarsi carattere abbinato. Perciò tutti hanno bisogno di essere sfuggito ... Ma qui i personaggi possono semplicemente essere racchiusi in un character class con appena fuga necessaria per le parentesi quadre

test = test.replaceAll("[\\[\\](){}]",""); 
+0

funziona, ma che ne dite di "[]" carattere? –

+0

@MuhammadHaryadiFutra aggiornato ........ – Reimeus

2

È possibile utilizzare String.replace invece di String.replaceAll per migliori prestazioni, come cerca la sequenza esatta e non ha bisogno di espressioni regolari.

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

Se si lavora con testi vi consiglio di sostituire le staffe con uno spazio vuoto per evitare di parole che unisce insieme: watching tv(at home) -> watching tvat home

4

Il primo argomento passato al metodo replaceAll() dovrebbe essere un espressione regolare. Se vuoi abbinare quei caratteri letterali di parentesi graffa, devi sfuggire a \\(, \\).

È possibile utilizzare quanto segue per rimuovere i caratteri della staffa. Unicode property \p{Ps} corrisponderà a qualsiasi tipo di staffa di apertura e Unicode property \p{Pe} corrisponde a qualsiasi tipo di staffa di chiusura.

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" 
+0

non sapevo che regex, grazie! –

0

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

Problemi correlati