2009-03-23 15 views
6

mam wyrażenia regularnego, zdefiniowane w verbatim C# typu string, jak tak:C# String zastępcze format w wyrażeniach regularnych

private static string importFileRegex = @"^{0}(\d{4})[W|S]\.(csv|cur)"; 

Pierwsze 3 litery, zaraz po starcie linii regex (^) może być jedna z wielu możliwych kombinacji znaków alfabetu.

chcę zrobić elegancki String.Format przy użyciu wyżej, kładąc moją kombinację 3-literowy wyboru na starcie i przy użyciu tego w moim algorytm dopasowywania, tak:

string regex = String.Format(importFileRegex, "ABC"); 

Który da mi Problemem jest, gdy robię String.Format, ponieważ mam inne nawiasy klamrowe w ciągu (np. \d{4}) String.Format szuka czegoś, co można tutaj umieścić, nie może go znaleźć i daje mnie błąd:

System.FormatException : Index (zero based) must be greater than or equal to zero and less than the size of the argument list. 

Ktoś wie, w jaki sposób, bez dzielenia struny, mogę uciec od innych nawiasów klamrowych lub czegoś, aby uniknąć powyższego błędu?

Odpowiedz

10

Spróbuj tego (zawiadomienie podwójne nawiasy klamrowe):

@"^{0}(\d{{4}})[W|S]\.(csv|cur)"

+0

Co powiedział także ta kwestia dotyczy to również i odpowiedź ma związek MSDN: http://stackoverflow.com/questions/160742/how-do-you-put-in-a-format-string –

+0

Zawsze zapominam o podwójnych nawiasach klamrowych. +1. – OregonGhost

Powiązane problemy