2013-08-14 7 views
9

Powiedz, że chcę użyć wyrażenia regularnego, aby dodać "test" przed każdym słowem w łańcuchu.

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

mogę to zrobić:

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

lub to:

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

chciałbym uzyskać ten sam wynik, więc jaka jest różnica pomiędzy $ & i wartość w wyrażeniu lambda? Jeśli nie ma różnic pod względem wyników, czy istnieje problem z wydajnością?

+4

+1; Nie wiedziałem, że możesz użyć lambda tutaj. – Nolonar

Odpowiedz

1

Lambdas to metody anonimowe, które działają tak samo jak zwykłe. Ta zadeklarowana w twoim przykładzie jest odpowiednikiem: string Convert(RegexMatch match) { return "test" + match.Value; }. Użycie tej składni daje dostęp do znacznie bogatszego zakresu możliwości, niż użycie wyrażenia Regex używanego w pierwszym przykładzie.

+1

Pytanie nie jest "czym jest wyrażenie lambda" ... Chciałbym wiedzieć, czy są jakieś różnice między używaniem "testu $ &" i m => "test" + m.wartość Nie sądzę istnieją różnice funkcjonalne między 2, ale nie jestem pewien na 100%. Chciałbym również poznać problem z wydajnością stosowania 1 rozwiązania nad drugim. – Anthony

Powiązane problemy