Заполнители формата строки C # в регулярных выражениях

У меня есть регулярное выражение, определенное дословным строковым типом C #, например:

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

Первые 3 буквы сразу после начала строки регулярного выражения (^) могут быть одной из многих возможных комбинаций буквенных символов.

Я хочу создать элегантный String.Format, используя вышеизложенное, поместив вначале свою трехбуквенную комбинацию выбора и используя ее в моем алгоритме сопоставления, например:

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

Это даст мне регулярное выражение ^ABC(\d{4})[W|S]\.(csv|cur)

Проблема в том, что когда я использую String.Format, потому что у меня есть другие фигурные скобки в строке (например, \d{4}) String.Format ищет что-то для вставки здесь, не может найти и выдает мне ошибку:

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

Кто-нибудь знает, как, не считая разделения строк, я могу избежать других фигурных скобок или чего-то еще, чтобы избежать вышеуказанной ошибки?


person A. Murray    schedule 23.03.2009    source источник


Ответы (1)


Попробуйте это (обратите внимание на двойные фигурные скобки):

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

person Andrew Hare    schedule 23.03.2009
comment
То, что он сказал, плюс этот вопрос также охватывает это, и в ответе есть ссылка MSDN: stackoverflow.com/questions/160742/ - person J M; 23.03.2009
comment
Я всегда забываю о двойных фигурных скобках. +1. - person OregonGhost; 23.03.2009