Строка Append в Java от даты без "-" до даты с "-" - PullRequest
0 голосов
/ 26 мая 2018

У меня есть строка «20180101», и мне нужно добавить «-» после «2018» и «01» и «01», чтобы она выглядела как «2018-01-01».Есть ли в Java стандартный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Поскольку в результате получается строка, которую я просто могу предложить использовать replaceAll, в которой используется, например, регулярное выражение:

String date = "20180101";
date = date.replaceAll("(....)(..)(..)", "$1-$2-$3");

или

date = date.replaceAll("(\\d{4})(\\d{2})(\\d{2})", "$1-$2-$3");
0 голосов
/ 26 мая 2018
LocalDate.parse(
    "20180101", 
    DateTimeFormatter.BASIC_ISO_DATE
)
.toString()

2018-01-01

Подробности

Эта строка выглядит как дата.Я предлагаю вам разобрать его в LocalDate.

Ваш формат входной строки uuuuMMdd является «базовым» вариантом стандарта ISO 8601. Классы java.time предварительно определили объект для этого шаблона форматирования, DateTimeFormatter.BASIC_ISO_DATE.

Этот класс генерирует String по умолчанию в нужном формате, стандартном формате ISO 8601 .

LocalDate localDate = LocalDate.parse("20180101", DateTimeFormatter.BASIC_ISO_DATE);
String output = localDate.toString();  // the default format is the format you want.

2018-01-01

Вышеуказанное немного дорого по производительности, поэтому вот простой подход с StringBuilder:

StringBuilder sb = new StringBuilder("20180101");
sb.insert(6, "-");
sb.insert(4, "-");
System.out.println(sb);
...