我想删除字符串“ 07:08:19 PM”中的“:,PM”。我想要07 08 19的结果

时间:2019-07-11 11:16:05

标签: java java-time

我正在尝试使用split函数删除字符串中的“:and PM”。

"07:45:19PM"

我想将07:45:19 PM设置为07 45 19

String s = "07:45:19PM"

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

4 个答案:

答案 0 :(得分:2)

灵活的高级解决方案使用现代的Java日期和时间API java.time。

出于许多目的,您不希望将时间从一种字符串格式转换为另一种字符串格式。在您的程序中,最好将一天中的某个时间作为LocalTime对象。就像您将数字保留在intdouble变量中一样,而不是字符串中。收到字符串后,首先将其解析为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 tutorial: Date Time解释了如何使用java.time。

答案 1 :(得分:0)

split接受regular expression,因此您需要使用:|PM来表示“ :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();

答案 2 :(得分:0)

只需使用以下代码:

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

输出:

07 45 19 

答案 3 :(得分:0)

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();