Как использовать RegEx.Replace для замены . и — на a / в следующей строке даты 01.04-2016

#c#

#c#

Вопрос:

У меня есть строка даты, которая была введена неправильно, которую мне нужно исправить, и я хотел бы знать, могу ли я использовать RegEx.Replace для достижения этой цели.

строка даты в файле — 01.10-2016

Я хотел бы заменить «.» и «-» на «/»

Комментарии:

1. Это должно отражать детали: (d{2}).(d{2})-(d{4})

2. Вот что я ввожу в MessageBox. Показать(Regex.Replace(«01.04-2016″, @»( d{2}).(d{2})-(d{4})», «/»)); но он возвращает только и «/»

3. Привет, есть ли что-нибудь, в чем вы все еще не уверены в этом вопросе?

Ответ №1:

Вы могли бы использовать это регулярное выражение: (d{2}).(d{2})-(d{4})

Разбивка:

  • d — Соответствует числам
  • {2} и {4} — Ожидает, что предыдущий шаблон (в нашем случае d ) появится 2 и 4 раза соответственно.
  • ( ) — Создает группу захвата
  • . . имеет особое значение в регулярных выражениях, поэтому мы избежим его.
  • . и - являются статическими значениями, которые, как мы ожидаем, будут находиться между нашими группами захвата.

Итак, части нашего окончательного выражения:

  • (d{2}) — Сопоставьте и запишите любое двузначное число от 00 до 99
  • . — Сопоставить .
  • (d{2}) — Сопоставьте и запишите любое двузначное число от 00 до 99
  • - — Сопоставить -
  • (d{4}) — Сопоставьте и запишите любое четырехзначное число от 0000 до 9999

Попробуйте онлайн

Теперь, чтобы фактически отформатировать дату так, как вы хотите, нам нужно взять данные, полученные этими 3 группами захвата, и выполнить замену. Вы можете ссылаться на них по их позиции в регулярном выражении, поэтому у нас есть $1 , $2 , и $3 .

 var input = "01.10-2016";
var result = Regex.Replace(input, @"(d{2}).(d{2})-(d{4})", "$1/$2/$3");
  

Это должно вывести желаемые значения.

Попробуйте онлайн

Комментарии:

1. Это то, что я искал — спасибо за вашу помощь