我在Java中有一个可变文本,我设法从日历blob文件中读取。它包含这样的样本:
" BEGIN:VCALENDAR PRODID: - // Kusss // DE VERSION:2.0方法:发布 开始:VEVENT UID:at-coursedate-1330089 DTSTAMP:20161110T124248Z DTSTART:20161005T114500Z DTEND:20161005T150000Z摘要:手机 计算(367008 / 2016W)\,Lva-LeiterIn:教授说明:位置:S3 057 X-GWSHOW-AS:忙碌结束:结局:VCALENDAR"
我想从文本中提取特定块并将其存储在数组中。我的兴趣只是获取
的信息 DTSTART :20161005T114500Z
的 DTEND :20161005T150000Z
如何使用简单的JAVA代码实现这一目标? 非常感谢!
答案 0 :(得分:0)
在此工作之前,您需要删除所有反斜杠。我建议你将每个字符串拆分,然后迭代整个数组,然后查看sting startsWith(DTSTART)
或startsWith(DTEND)
是否可以将它们存储在某个地方
String s=new String("BEGIN:VCALENDAR PRODID:-//Kusss//DE VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT UID:at-coursedate-1330089 DTSTAMP:20161110T124248Z DTSTART:20161005T114500Z DTEND:20161005T150000Z SUMMARY:Mobile Computing (367008/2016W), Lva-LeiterIn: prof DESCRIPTION: LOCATION:S3 057 X-GWSHOW-AS:BUSY END:VEVENT END:VCALENDAR");
String[] test=s.split(" ");
for(String str:test){
if(str.startsWith("DTSTART")||str.startsWith("DTEND")){
System.out.println(str);
}
}
产生:
DTSTART:20161005T114500Z
DTEND:20161005T150000Z
答案 1 :(得分:0)
或者你可以这样做:
String a = "BEGIN:VCALENDAR PRODID:-//Kusss//DE VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT "
+ "UID:at-coursedate-1330089 DTSTAMP:20161110T124248Z DTSTART:20161005T114500Z "
+ "DTEND:20161005T150000Z SUMMARY:Mobile Computing (367008/2016W)\\, Lva-LeiterIn: "
+ "prof DESCRIPTION: LOCATION:S3 057 X-GWSHOW-AS:BUSY END:VEVENT END:VCALENDAR";
String start = a.substring(a.lastIndexOf("DTSTART"), a.lastIndexOf("DTEND")-1);
String end = a.substring(a.lastIndexOf("DTEND"), a.lastIndexOf("SUMMARY")-1);
System.out.println(start);
System.out.println(end);
会产生:
DTSTART:20161005T114500Z
DTEND:20161005T150000Z
答案 2 :(得分:0)
使用Pattern regex。
请考虑您有自己的文字和两个关键字:
String s = "BEGIN:VCALENDAR PRODID:-//Kusss//DE VERSION:2.0 METHOD:PUBLISH BEGIN:VEVENT UID:at-coursedate-1330089 DTSTAMP:20161110T124248Z DTSTART:20161005T114500Z DTEND:20161005T150000Z SUMMARY:Mobile Computing (367008/2016W)\\, Lva-LeiterIn: prof DESCRIPTION: LOCATION:S3 057 X-GWSHOW-AS:BUSY END:VEVENT END:VCALENDAR";
findValue(s, "DTSTART");
findValue(s, "DTEND");
将您的文字和所需的密钥发送到以下方法:
private static String findValue(String text, String keyword) {
Pattern p = Pattern.compile(keyword+ ":([^\\s]+)"); // the regex to be found
Matcher m = p.matcher(text);
if (m.find()) { // if found
return m.group().replace(dtStartOrEnd + ":", ""); // return found, except 'DTSTART:' / 'DTEND:'
}
return null; // Not found
}
此方法已准备好在'键之后为该字符串中的所有值提供:'在下一个空格之前。