2013-08-14 1 views
9

Angenommen, ich möchte einen regulären Ausdruck verwenden, um "test" vor jedem Wort in einer Zeichenfolge hinzuzufügen.

string MyText="hello world" 
string Pattern = "\w+"; 

kann ich dies tun:

Regex.Replace(MyText, Pattern, "test$&") 

oder dies:

Regex.Replace(MyText, Pattern, m=>"test"+m.Value) 

Ich würde das gleiche Ergebnis, so bekommen, was ist der Unterschied zwischen $ & und Wert in dem Lambda-Ausdruck? Wenn es keinen Unterschied in Bezug auf die Ergebnisse gibt, gibt es ein Leistungsproblem?

+4

+1; Ich wusste nicht, dass du hier ein Lambda benutzen könntest. – Nolonar

Antwort

1

Lambdas sind anonyme Methoden, die genau wie normale funktionieren. Die in Ihrem Beispiel deklarierte entspricht: string Convert(RegexMatch match) { return "test" + match.Value; }. Mit dieser Syntax können Sie auf einen viel umfangreicheren Bereich von Möglichkeiten zugreifen, indem Sie den im ersten Beispiel verwendeten Regex-Ausdruck verwenden.

+1

Die Frage ist nicht "was ist ein Lambda-Ausdruck" ... Was ich gerne wissen würde ist, ob es irgendwelche Unterschiede zwischen der Verwendung von "test $ &" und m => "test" + m gibt. Wert glaube ich nicht Es gibt funktionale Unterschiede zwischen den 2, aber ich bin mir nicht sicher bei 100%. Ich möchte auch das Leistungsproblem der Verwendung von 1 Lösung gegenüber dem anderen kennen. – Anthony

Verwandte Themen