строка.Формат, регулярное выражение + фигурные скобки (C#)

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

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

спасибо.

3 ответов


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

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

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

string regex = @"^\d{0," + MaxLength + "}";

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

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

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

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

для получения подробной информации о строках форматирования,см. MSDN

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

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

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