2013-08-14 13 views
9

Bir dizedeki her kelimenin önüne "testi" eklemek için normal bir ifade kullanmak istediğini farz edelim.

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

bunu yapabileceğimi:

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

veya bu:

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

Öyle lambda ifadede $ & ve Değer arasındaki fark nedir aynı sonucu alacağı? Sonuçlar açısından fark yoksa, bir performans sorunu var mı?

+4

+1; Burada bir lambda kullanabileceğini bilmiyordum. – Nolonar

cevap

1

Lambda'lar düzenli olanlar aynı şekilde çalışmaya devam anonim yöntemlerdir. string Convert(RegexMatch match) { return "test" + match.Value; }: sizin örnekte beyan biri eşdeğerdir. bu sözdizimini kullanarak sonra ilk örnekte kullanılan Regex ifade kullanarak olasılıklar çok daha zengin bir yelpazede erişmesine izin verebilirsiniz.

+1

soru değil kullanıyorum "test $ &" arasında herhangi bir fark olup olmadığını ve m => "test" + m.Value sanmıyorum olduğunu bilmek istiyorum ne ... "Lambda deyimi ne" 2 arasında işlevsel farklılıklar var ama% 100 emin değilim. Bir diğeri üzerinde 1 çözüm kullanma konusundaki performans konusunu da bilmek isterim. – Anthony