2013-06-29 13 views
8

Ich habe noch nie Regex verwendet. Ich war abel ähnliche Fragen im Forum zu sehen, aber nicht genau, was ich suche nachWerte zwischen geschweiften Klammern erhalten C#

Ich habe eine Zeichenfolge wie folgt. müssen die Werte zwischen geschweiften Klammern

Ex bekommen: "{} name}{[email protected]"

und ich brauche die folgenden gespaltet Strings zu erhalten.

Name und [email protected]

Ich habe versucht, die folgende und es gibt mir die gleiche Zeichenfolge zurück.

string s = "{name}{[email protected]}"; 
string pattern = "({})"; 
string[] result = Regex.Split(s, pattern); 
+0

Dies ist ein ziemlich gutes Werkzeug für die Erstellung von regex Muster/Lern ​​regex http: // gskinner.com/RegExr/ –

Antwort

16

regex Nutzt ein Muss? In diesem speziellen Beispiel würde ich schreiben:

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries) 
+0

@FabianBigler Ich hatte den Eindruck, dass Regex das leicht erreichen kann, also habe ich Regex in den Titel eingefügt :). Ich habe den Titel jetzt geändert;) – Kurubaran

+0

Würde die vorgeschlagene Lösung nicht auch eine Zeichenfolge wie 'string s =" }name{[email protected] "korrekt annehmen;'? – Josep

+0

Ich habe zu schnell gewählt ... Diese Lösung bietet keine Antwort. Betrachte Eingabe-String: {name}blabla{[email protected]}, du wirst auch "blabla" im Array haben ... – Jurion

0

hier gehen Sie

string s = "{name}{[email protected]}"; 
s = s.Substring(1, s.Length - 2);// remove first and last characters 
string pattern = "}{";// split pattern "}{" 
string[] result = Regex.Split(s, pattern); 

oder

string s = "{name}{[email protected]}"; 
s = s.TrimStart('{'); 
s = s.TrimEnd('}'); 
string pattern = "}{"; 
string[] result = Regex.Split(s, pattern); 
+0

Es funktioniert, aber gibt es eine Möglichkeit, dieses Ergebnis nur mit Regex-Muster ohne Substring zu erhalten? – Kurubaran

+0

aktualisiert Antwort Methode 2 ohne Teilzeichenfolge –

+0

Ich frage mich, ob es irgendwelche war, das Ergebnis nur mit Regex-Muster zu erhalten, ohne andere String-Manipulation zu tun? – Kurubaran

23

Verwenden Matches von Regex statt Split dies leicht zu erreichen:

string input = "{name}{[email protected]}"; 
var regex = new Regex("{.*?}"); 
var matches = regex.Matches(input); //your matches: name, [email protected] 
foreach (var match in matches) // e.g. you can loop through your matches like this 
{ 
    //yourmatch 
} 
+0

Nach oben Antworten zu dieser Anfrage geantwortet: – Kurubaran

+0

@Coder Ok cheers! –

Verwandte Themen