假设英文句子:
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/