2010-05-16 9 views
6

Ich habe eine Zeichenfolge "Hallo [Welt] this {ist} a (Test)" Ich möchte den gesamten Text in geschweiften Klammern, z. "hallo das a" zurückgeben. Aber nur wenn die geschweiften Klammern übereinstimmen.
Hat jemand eine nette saubere Lösung?Entfernen von Text in allen Arten von Klammern

+0

Was ist das gewünschte Verhalten, wenn geschweifte Klammern nicht übereinstimmen? "this {is another {test}" Wie wäre es mit der Verschachtelung? "das ist {ein anderer {test}}" – Anton

Antwort

4

können Sie einen regulären Ausdruck verwenden:

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

Die \s*? Matches alle Leerzeichen vor den Klammern.
Die (?:) ist eine nicht passende Klammer, um die Bedingungen darin zu gruppieren.
Die \(.*?\) ist eine Umrandung von Klammern mit null oder mehr Zeichen zwischen ihnen.

Verwandte Themen