string.Format, regex + фигурные скобки (C #) - PullRequest
9 голосов
/ 28 ноября 2009

Как использовать string.Format для ввода значения в регулярное выражение, где это регулярное выражение уже содержит фигурные скобки для определения ограничения повторения? (Мой разум мутный из-за синтаксиса)

например, Обычное регулярное выражение: " ^ \ d {0,2} ", и я хочу вставить '2' из свойства MaxLength

Спасибо.

Ответы [ 3 ]

19 голосов
/ 28 ноября 2009

Заменить одиночные фигурные скобки на двойные фигурные скобки:

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

Если это причиняет боль вашим глазам, вы можете вместо этого просто использовать обычное объединение строк:

string regex = @"^\d{0," + MaxLength + "}";
4 голосов
/ 28 ноября 2009

Вы можете избежать фигурных скобок, удвоив их:

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

В вашем случае это было бы что-то вроде этого:

string regexPattern = string.Format("^\d{{0,{0}}}", MaxLength);
2 голосов
/ 28 ноября 2009

Подробнее о строках форматирования см. MSDN

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

И да, дополнительный параметр равен может потребоваться (нет, это не в этом случае) из-за эксцентричности интерпретации скобок. См. Ссылку MSDN для более подробной информации.

В общем, я должен согласиться с Марком, просто в этом случае используйте обычную конкатенацию строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...