Я хочу удалить ":, PM" в строке "07:08:19 PM".Я хочу результат 07 08 19 - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь использовать функцию разделения для удаления «: и PM» в строке.

"07:45:19PM"

Я хочу превратить 07:45:19 в 07 45 19

String s = "07:45:19PM"

String heys[] = new String[10];
heys = s.split(":PM");

Ответы [ 4 ]

2 голосов
/ 11 июля 2019

Гибкое высокоуровневое решение использует java.time, современный Java-интерфейс даты и времени.

Для многих целей не следует преобразовывать время из одного строкового формата в другой.В вашей программе лучше хранить время суток как LocalTime объект.Также как вы храните числа в переменных int или double, а не в строках.Когда вы получите строку, разберите ее на LocalTime первым делом.Только когда вам нужно выдать строку, отформатируйте LocalTime в нужную строку.

Синтаксический ввод

    DateTimeFormatter givenFormatter = DateTimeFormatter.ofPattern("hh:mm:ssa", Locale.ENGLISH);

    String s = "07:45:19PM";
    LocalTime time = LocalTime.parse(s, givenFormatter);

Форматирование и вывод на печать

    DateTimeFormatter wantedFormatter = DateTimeFormatter.ofPattern("hh mm ss");
    String wantedString = time.format(wantedFormatter);
    System.out.println(wantedString);

Вывод:

07 45 19

Учебное пособие

Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time.

0 голосов
/ 11 июля 2019
String s = "07:45:19PM";
String heys[] = s.split(":|PM");
String parsedString = new StringBuilder().append(heys[0]).append(" ").append(heys[1]).append(" ").append(heys[2]).toString();
0 голосов
/ 11 июля 2019

Просто используйте этот код:

String s = "07:45:19PM";
String[] heys = s.split(":");
for(String hey: heys) {
    System.out.print(hey.replace("PM", "") + " ");
}

Вывод:

07 45 19 
0 голосов
/ 11 июля 2019

split принимает регулярное выражение , поэтому вам нужно использовать :|PM для обозначения "a : или PM":

String[] heys = s.split(":|PM");

Вам не нужно указывать длину keys, потому что split сама это выяснит.

В качестве альтернативы, если вы действительно хотите извлечь часы, минуты и секунды как целые числа, вы можете использовать LocalTime.parse:

LocalTime time = LocalTime.parse(s, 
    DateTimeFormatter.ofPattern("hh:mm:ssa").withLocale(Locale.US));
int hour = time.getHour();
int minute = time.getMinute();
int second = time.getSecond();
...