2010-05-16 16 views
6

Ho una stringa "ciao [mondo] questo {is} a (test)" Voglio rimuovere tutto il testo in parentesi graffe, ad es. tornando "ciao questo a". Ma solo se le parentesi corrispondono.
Qualcuno ha una bella soluzione pulita?Rimozione del testo in tutti i tipi di parentesi graffe

+0

Qual è il comportamento desiderato se le parentesi non corrispondono? "this {is another {test}" Cosa ne pensi di annidare? "questo è {another {test}}" – Anton

risposta

4

è possibile utilizzare un'espressione regolare:

s = Regex.Replace(s, @"\s*?(?:\(.*?\)|\[.*?\]|\{.*?\})", String.Empty); 

I \s*? partite qualsiasi spazio bianco prima le staffe.
L'(?:) è una parentesi non corrispondente per raggruppare le condizioni al suo interno.
Il \(.*?\) è parentesi matematica con zero o più caratteri tra di loro.

Problemi correlati