2012-04-15 12 views
0

ich diesen Code haben eine Zeichenfolgeerzeugen Daten von formatierten String

string s = "the first number is: {0} and the last is: {1} "; 
int first = 2, last = 5; 
string f = String.Format(s, first, last); 

I first und last aus final formatierten String extrahieren möchten Format (f) .Es bedeutet, dass ich die f zu extrahieren, um de-Format wollen first und last (Ich habe das Format Basis (s)).

gibt es eine Möglichkeit, dass dies:

  • extrahiert sie mit string.Split() (hart und schlecht)

aber ich denke, es gibt eine einfache Lösung in .net ist, aber ich weiß nicht weiß was das ist.

kann mir jemand sagen, was ist der einfache Weg?

+0

In Zukunft wäre es besser, wenn Sie Ihre alte Frage bearbeiten, anstatt sie zu löschen und eine neue zu erstellen. – svick

+0

Warum versuchen Sie das auch? Es gibt wahrscheinlich eine bessere Lösung. – svick

+0

@svick: Es hat -3 Stimmen bekommen, weil ich meine Frage nicht korrekt angegeben habe. und wenn ich das tat, bekam es mehr als -3 Stimmen und ich konnte meine Antwort nicht bekommen :( –

Antwort

5

Warum nicht hier einige Regex verwenden?

string s = "the first number is: {0} and the last is: {1} "; 
int first = 2, last = 5; 
string f = String.Format(s, first, last); 

string pattern = @"the first number is: ([A-Za-z0-9\-]+) and the last is: ([A-Za-z0-9\-]+) "; 
Regex regex = new Regex(pattern); 
Match match = regex.Match(f); 
if (match.Success) 
{ 
    string firstMatch = match.Groups[1].Value; 
    string secondMatch = match.Groups[2].Value; 
} 

Sie können es offensichtlich mit der richtigen Fehlerprüfung robuster machen.

1

Sie können Regex verwenden, um es auf eine dynamischere Weise zu erreichen.

1

Ist das wonach Sie suchen?

 string s = "the first number is: {0} and the last is: {1} "; 
     int first = 2, last = 5; 
     string f = String.Format(s, first, last); 
     Regex rex = new Regex(".*the first number is: (?<first>[0-9]) and the last is: (?<second>[0-9]).*"); 
     var match = rex.Match(f); 
     Console.WriteLine(match.Groups["first"].ToString()); 
     Console.WriteLine(match.Groups["second"].ToString()); 
     Console.ReadLine(); 
+0

nein, der Typ von 'first' und' last' war Beispiel –

+0

Entweder ich ' Ich interpretiere dich nicht richtig oder umgekehrt ... Was ich getan habe, ist dir eine Möglichkeit zu geben, named grou zu finden ps aus einer Regex mit Namen. Dafür stehen die spitzen Klammern im Regex-Muster. Auf diese Weise vermeiden Sie die Verwendung von Indexern. Ich bin mir nicht sicher, was Sie in Ihrer Antwort gemeint haben ... Wie auch immer, ich sehe, Sie haben eine Lösung, also keine Rolle. –

Verwandte Themen