Android 无法获取使用正则表达式的Java拆分函数
我有一个格式为YYYYDDMMHHSS的datetime字符串,我想将其拆分为几个组成部分 从我对正则表达式(基于Perl和Javascript)的理解来看,我的印象是以下几点应该是可行的:-Android 无法获取使用正则表达式的Java拆分函数,android,regex,Android,Regex,我有一个格式为YYYYDDMMHHSS的datetime字符串,我想将其拆分为几个组成部分 从我对正则表达式(基于Perl和Javascript)的理解来看,我的印象是以下几点应该是可行的:- String dt[] = c.getString(c.getColumnIndex("datetime")).split("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)"); 其中c是一个单输入光标。但事实并非如此 我搜索过SO和Google,但是,尽管
String dt[] = c.getString(c.getColumnIndex("datetime")).split("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)");
其中c是一个单输入光标。但事实并非如此
我搜索过SO和Google,但是,尽管有拆分的例子,但它们只是在单个字符上拆分
我怎样才能把日期时间分解成它的组成部分呢 您可以使用此正则表达式匹配组:
public static void main(String[] args) {
String string = "200426122313";;
Pattern pattern = Pattern.compile("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)");
Matcher matcher = pattern.matcher(string);
matcher.find();
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
System.out.println(matcher.group(5));
}
然后获取输出:
2004
26
12
23
13
等。正则表达式中的括号是一个捕获组,它捕获一段文本,您要提取
您还可以使用以下命令拆分字符串:
(?<=^\d{4}|^\d{6}|^\d{8}|^\d{10})
您可以使用此正则表达式匹配组:
public static void main(String[] args) {
String string = "200426122313";;
Pattern pattern = Pattern.compile("(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d)");
Matcher matcher = pattern.matcher(string);
matcher.find();
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
System.out.println(matcher.group(5));
}
然后获取输出:
2004
26
12
23
13
等。正则表达式中的括号是一个捕获组,它捕获一段文本,您要提取
您还可以使用以下命令拆分字符串:
(?<=^\d{4}|^\d{6}|^\d{8}|^\d{10})
尝试使用以下命令对其进行分析:
Date date;
String dtStart = "YYYYDDMMHHSS";
SimpleDateFormat format = new SimpleDateFormat("yyyyddMMHHss"); //mm -> minutes??
try {
date = format.parse(dtStart);
System.out.println("Date ->" + date);
} catch (Exception e) {
e.printStackTrace();
}
尝试使用以下命令对其进行分析:
Date date;
String dtStart = "YYYYDDMMHHSS";
SimpleDateFormat format = new SimpleDateFormat("yyyyddMMHHss"); //mm -> minutes??
try {
date = format.parse(dtStart);
System.out.println("Date ->" + date);
} catch (Exception e) {
e.printStackTrace();
}
虽然正则表达式解决方案会起作用,但最好使用
SimpleDateFormat
处理日期而正则表达式解决方案会起作用,最好使用SimpleDateFormat
处理日期感谢快速回复抱歉-错过了您对我评论的回复。简单的回答是,我没有尝试,因为我以一种更适合应用程序的不同方式实现了相同的最终结果。但是,对于未来,我现在知道要做什么,并且在下次需要解析字符串时将执行您的建议。-谢谢。谢谢你的快速回复。抱歉-错过了你对我评论的回复。简单的回答是,我没有尝试,因为我以一种更适合应用程序的不同方式实现了相同的最终结果。但是,对于未来,我现在知道要做什么,并且在下次需要解析字符串时将执行您的建议。-谢谢。再次感谢您的快速回复。和我之前的评论一样,我只需要这样做一次,所以日期格式化似乎也太过分了。再次感谢您的快速回复。和我之前的评论一样,我只需要这样做一次,所以日期格式化似乎也太过分了。