строка.Формат, регулярное выражение + фигурные скобки (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 для получения дополнительной информации.
В общем, я должен согласиться с Марком, просто перейдите к нормальной конкатенации строк в этом случае.