java - 从句子java中获取日期、时间和整数值

标签 java regex string date time

假设英文句子:

String s = "您上次登录时间为 2013/10/04 13:06:45(0 天、0 小时、0 分钟)";

还有中文句子:

String s = "您上次登录是 2013/10/04 13:06:45( 0 天, 0 0 分钟)";

我已经尝试

  String[] words = s.split("\\s+");
  for (int i = 0; i < words.length; i++) {
  System.out.println(words[i]);
  }

我得到了英语句子

13:10:47,829 INFO  [STDOUT] Your
13:10:47,829 INFO  [STDOUT] Last
13:10:47,829 INFO  [STDOUT] Login
13:10:47,829 INFO  [STDOUT] was
13:10:47,829 INFO  [STDOUT] 2013/10/04
13:10:47,829 INFO  [STDOUT] 13:06:45
13:10:47,829 INFO  [STDOUT] (
13:10:47,829 INFO  [STDOUT] 0
13:10:47,829 INFO  [STDOUT] Days,
13:10:47,829 INFO  [STDOUT] 0
13:10:47,829 INFO  [STDOUT] Hours,
13:10:47,829 INFO  [STDOUT] 0
13:10:47,829 INFO  [STDOUT] Minutes
13:10:47,829 INFO  [STDOUT] )

对于中文句子:

13:11:49,712 INFO  [STDOUT] 您上次登录是
13:11:49,712 INFO  [STDOUT] 2013/10/04
13:11:49,712 INFO  [STDOUT] 13:07:15(
13:11:49,712 INFO  [STDOUT] 0
13:11:49,712 INFO  [STDOUT] 天,
13:11:49,712 INFO  [STDOUT] 0
13:11:49,712 INFO  [STDOUT] 小时
13:11:49,712 INFO  [STDOUT] 4
13:11:49,712 INFO  [STDOUT] 分钟
13:11:49,712 INFO  [STDOUT] )

在结果中,我可以轻松地从英语句子中获取日期、时间和整数值。 但是当句子变成中文时,它无法使用相同的方式获取值。因为句子分割后的数组数量不同。有什么方法可以从句子中获取日期、时间和整数值,即使在不同的语言中,并且句子分割后返回的数组数量不同。

最佳答案

 public static void main(String[] args) {
    String english = "Your Last Login was 2013/10/04 13:06:45 ( 0 Days, 0 Hours, 0 Minutes )";
    String chinese = "您上次登录是 2013/10/04 13:06:45( 0 天, 0 小时 0 分钟 )";

    String datePattern = "\\d\\d\\d\\d/\\d\\d/\\d\\d"; 
    String timePattern = "\\d\\d:\\d\\d:\\d\\d";

    System.out.println(getMatch(english, datePattern));
    System.out.println(getMatch(english, timePattern));
    System.out.println(getMatch(english, "\\d Days"));
    System.out.println(getMatch(english, "\\d Hours"));
    System.out.println(getMatch(english, "\\d Minutes"));
    System.out.println();
    System.out.println(getMatch(chinese, datePattern));
    System.out.println(getMatch(chinese, timePattern));
    System.out.println(getMatch(chinese, "\\d 天"));
    System.out.println(getMatch(chinese, "\\d 小时"));
    System.out.println(getMatch(chinese, "\\d 分钟"));
}

private static String getMatch(String input, String regex) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(input);
    if (matcher.find()) {
        return matcher.group();
    } else {
        return "";
    }
}

关于java - 从句子java中获取日期、时间和整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19173757/

相关文章:

java - 保存 BLOB 时为 "could not reset reader"

java - 如何从sun bug数据库中的内部版本号查找jdk版本

java - 如何将图片发送到 Discord channel

javascript - Javascript 中字符串的正则表达式

php - 如何将退格字符添加到字符串文字?

Java:如何创建特定的类实例?

Javascript - 如何在不干扰页面中 HTML 的情况下添加指向页面中单词的链接

java - 使用一个元组流中的字段作为第二个元组流上 RegexParser 中正则表达式的一部分

java - 为什么这个 String.equals() 不起作用?

java - 字符串池与常量池