2009-03-23 2 views
6

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

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

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

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

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

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

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

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

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

ответ

10

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

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

+0

То, что он сказал плюс этот вопрос также охватывает его, и ответ имеет ссылку MSDN: http://stackoverflow.com/questions/160742/how-do-you-put-and-in-a-format –

+0

Я всегда забываю о двойных фигурных скобках. +1. – OregonGhost

Смежные вопросы