2009-11-28 20 views
9

Normal bir ifadeye bir değer girmek için string.Format öğesini nasıl kullanırım? Bu normal ifadede, yineleme sınırlaması tanımlamak için zaten bu belgede kaşlı ayraçlar var mı? (Zihnim, sözdizimi için çarpışmadan bulanık)string.Format, regex + küme parantezleri (C#)

örn. Normal regex "^\ d {0,2}" olduğunu ve mülkiyet MaxLength

Teşekkür gelen '2' eklemek istiyoruz.

cevap

19

:

Senin durumunda

string.Format("Hello {{World}}") // returns "Hello {World}" 

, onun gibi bir şey olurdu

string regex = string.Format(@"^\d{{0,{0}}}", MaxLength); 

Bu, gözlerinizi incitirse, sıradan dize birleştirme sıralamasını kullanabilirsiniz. reklam:

biçimlendirme dizeleri ilgili ayrıntılar için
string regex = @"^\d{0," + MaxLength + "}"; 
+3

dize birleştirme işlemi * * * * * * * * * gözlerinin zarar görmesini sağlar; –

+2

Bunlardan hiçbirini beğenmezseniz, başka bir seçenek @ "^ \ d {0, $ MaxLength}" olabilir. Değiştirin ("$ MaxLength", MaxLength) (.ToString)). Kendimden hoşlandığımdan emin değilim çünkü C# gibi değil ama normal ifadeyi okunabilir formda tutuyor. –

4

Bunları iki katına tarafından küme parantezi kaçabilir: çift küme parantezleri ile tek küme parantezi değiştirin

string regexPattern = string.Format("^\d{{0,{0}}}", MaxLength); 
2

, see MSDN

var regex = String.Format(@"^\d{{0,{0}{1}", this.MaxLength, "}") 

Ve evet, ekstra parametre nedenlerle gerekli (hayır, bu durumda değil) olabilmekte diş tellerinin yorumlanış şeklinin eksantriklikleri. Daha fazla bilgi için MSDN bağlantısına bakın.

Her şeyden önce, Mark ile aynı fikirdeyim.

+0

kapanış bir kaşlı ayraç eksik;) –

+0

Hayır değilim;) Hızlı bir tane yakaladım. –