Java 如何按日期格式拆分字符串

Java 如何按日期格式拆分字符串,java,Java,我的java类中有一个低于字符串的值 Nazar下午1:46您好,我有一些关于API管理的问题,Sadhana下午1:46加入了 我想根据上面提到的时间把它分开。它应该以这样一种方式显示输出,即每当出现时间值时,它都会创建一个新的换行符。如下图所示: Nazar 下午1:46你好,我有一些关于API管理的问题。 下午1:46 Sadhana加入了 我如何才能做到这一点。您可以尝试以下方法: str.split("(?=\\d{1,2}:\\d{1,2} (AM|PM))"); 您可以尝试以下方

我的java类中有一个低于字符串的值

Nazar下午1:46您好,我有一些关于API管理的问题,Sadhana下午1:46加入了

我想根据上面提到的时间把它分开。它应该以这样一种方式显示输出,即每当出现时间值时,它都会创建一个新的换行符。如下图所示:

Nazar
下午1:46你好,我有一些关于API管理的问题。
下午1:46 Sadhana加入了


我如何才能做到这一点。

您可以尝试以下方法:

str.split("(?=\\d{1,2}:\\d{1,2} (AM|PM))");

您可以尝试以下方法:

str.split("(?=\\d{1,2}:\\d{1,2} (AM|PM))");

您也可以使用这个正则表达式

(?=\b(((11|12|10|(0[1-9]{1})):)|[\d]:)[0-5][0-9](\s)?(?i)(am|pm))
描述:

它应该匹配
hh:mm AM/PM
h:mm AM/PM

hh    -> hours 01-09 or 10,11,12 or 1-9
mm    -> minutes 00-59
AM/PM -> case insensitive
用法:

 String text = "Nazar 11:46 PM Hello, I have few questions related to API Management 10:46 PM "
            + "Sadhana has joined 06:35 AM its early 6:50 PM and late";

    String texts[] = text.split("(?=\\b(((11|12|10|(0[1-9]{1})):)|[\\d]:)[0-5][0-9](\\s)?(?i)(am|pm))");  

    for(String s : texts){
        System.out.println(s);
    }
输出:

Nazar 
11:46 PM Hello, I have few questions related to API Management 
10:46 PM Sadhana has joined 
06:35 AM its early 
6:50 PM and late

您也可以使用这个正则表达式

(?=\b(((11|12|10|(0[1-9]{1})):)|[\d]:)[0-5][0-9](\s)?(?i)(am|pm))
描述:

它应该匹配
hh:mm AM/PM
h:mm AM/PM

hh    -> hours 01-09 or 10,11,12 or 1-9
mm    -> minutes 00-59
AM/PM -> case insensitive
用法:

 String text = "Nazar 11:46 PM Hello, I have few questions related to API Management 10:46 PM "
            + "Sadhana has joined 06:35 AM its early 6:50 PM and late";

    String texts[] = text.split("(?=\\b(((11|12|10|(0[1-9]{1})):)|[\\d]:)[0-5][0-9](\\s)?(?i)(am|pm))");  

    for(String s : texts){
        System.out.println(s);
    }
输出:

Nazar 
11:46 PM Hello, I have few questions related to API Management 
10:46 PM Sadhana has joined 
06:35 AM its early 
6:50 PM and late

您可以使用此正则表达式拆分:

String[] arr = str.split("(?=(?<!\\d:)\b\\d{1,2}:\\d{1,2}(?::\\d{1,2})? [AP]M\b)\\s*");

String[]arr=str.split((?=(?您可以使用此正则表达式进行拆分:

String[] arr = str.split("(?=(?<!\\d:)\b\\d{1,2}:\\d{1,2}(?::\\d{1,2})? [AP]M\b)\\s*");

String[]arr=str.split((?=(?此正则表达式应创建所需的输出

String s = "Nazar 1:46 PM Hello, I have few questions related to API Management 10:46 PM Sadhana has joined";
String s1[] = s.split("(\\s)(?=([01]?\\d:[0-6]?\\d\\s?([Aa]|[Pp])[Mm]))");
for (String s2 : s1) {
    System.out.println(s2);
}

这个正则表达式应该创建您想要的输出

String s = "Nazar 1:46 PM Hello, I have few questions related to API Management 10:46 PM Sadhana has joined";
String s1[] = s.split("(\\s)(?=([01]?\\d:[0-6]?\\d\\s?([Aa]|[Pp])[Mm]))");
for (String s2 : s1) {
    System.out.println(s2);
}
Java有一个名为using的类,您可以使用该类查找给定模式的实例

这个问题在链接中有合适的解决方案:

Java有一个名为using的类,您可以使用它查找给定模式的出现情况


这个问题在链接中有合适的解决方案:

看一看java.langString的拆分函数和正则表达式。(Google:java正则表达式)试试。请看一看java.langString的拆分函数和正则表达式。(Google:java正则表达式)试试看。看,那不是分号,那是冒号。当我把时间改成11:46和10:46时无法拆分。@JSK我更新了我的答案。我希望它能满足你的需要。那不是分号,那是冒号。当我把时间改成11:46和10:46时无法拆分。@JSK我更新了我的答案。我希望它能满足你的需要。当我改变时间时无法拆分ime到11:46和10:46。当我将时间更改为11:46和10:46时无法拆分。谢谢你,anubhava。你的代码对我有效。但现在又出现了一个问题。问题是输入字符串可以同时包含两种时间格式。即1:46 PM和(2:49:02 PM)。我如何将包含这两种时间格式的特定字符串按行拆分。需要您的指导。谢谢您,anubhava。您的代码对我有效。但现在又提出了一个问题。问题是输入字符串可以同时包含两种时间格式。即1:46 PM和(2:49:02 PM)。我如何按行分割包含这两种时间格式的特定字符串。需要您的指导。