#regex #string #split
#регулярное выражение #строка #разделение
Вопрос:
Мне нужно преобразовать эту (дату) строку «12112014» в «12.11.2014»
Что я хотел бы, так это:
Разделите первые 2 строки на «12», добавьте «.», затем разделите строку с 3-4, чтобы получить «11», добавьте «.» в конце разделите последние 4 строки (или 5-8), чтобы получить «2012»
Я уже выяснил, как получить первые 2 символа ( «^ d{2}» ), но мне не удалось получить символы на основе позиции.
Ответ №1:
Каким бы ни был язык программирования, вы должны попытаться извлечь цифры из строки, а затем соединить их с помощью «.».
В perl это можно сделать следующим образом :
$_ = '12112014';
s/(d{2})(d{2})(d{4})/$1.$2.$3/;
print "$_";
Ответ №2:
Без указания языка, который вам нужен, я выбрал javascript:
var s = '12012011';
var s2 = s.replace(/(d{2})(d{2})(d{4})/,'$1.$2.$3'));
console.log(s2); // prints "12.01.2011"
Суть этого в том, что вы используете ()
для указания групп внутри вашего регулярного выражения, а затем можете использовать группы в своем выражении замены.
То же самое в Java:
String s = "12012011";
String s2 = s.replaceAll("(\d{2})(\d{2})(\d{4})", "$1.$2.$3");
System.out.println(s2);
Ответ №3:
Я не думаю, что вы могли бы сделать это только с помощью split.
Вы могли бы расширить свое выражение до:
"(^(d{2})(d{2})(d{4}))"
Затем обратитесь к группам с выбранным вами языком регулярных выражений и создайте нужную строку.
Обратите внимание, что — помимо изучения всех регулярных выражений — в качестве альтернативы вы всегда можете проанализировать исходную строку в строго типизированные переменные даты или даты и времени и вывести значение, используя соответствующие локали.