![](/img/trans.png)
[英]How do I get specific date information using a Calendar object in Java?
[英]How do i parse a string to get specific information using java?
这是文件中的几行,我不确定如何解析该文件以提取4条信息。
11::American President, The (1995)::Comedy|Drama|Romance
12::Dracula: Dead and Loving It (1995)::Comedy|Horror
13::Balto (1995)::Animation|Children's
14::Nixon (1995)::Drama
我想获取编号,标题,发行日期和类型。 流派有多种流派,所以我也想将每个流派保存在一个变量中。
我正在使用.split("::|\\\\|");
解析它的方法,但我无法解析发布日期。
谁能帮我!
最简单的是通过正则表达式进行匹配,像这样
String x = "11::Title (2016)::Category";
Pattern p = Pattern.compile("^([0-9]+)::([a-zA-Z ]+)\\(([0-9]{4})\\)::([a-zA-Z]+)$");
Matcher m = p.matcher(x);
if (m.find()) {
System.out.println("Number: " + m.group(1) + " Title: " + m.group(2) + " Year: " + m.group(3) + " Categories: " + m.group(4));
}
(请不要把我的确切语法钉在我头上)
然后,第一个捕获将是数字,第二个将捕获名称,第三个是年份,第四个是类别集,然后可以将其除以'|'。
您可能需要调整标题和类别的有效字符,但是您应该了解一下。
如果有多行,请先将它们拆分为ArrayList,然后在循环中分别对待每一行。
尝试这个
String[] s = {
"11::American President, The (1995)::Comedy|Drama|Romance",
"12::Dracula: Dead and Loving It (1995)::Comedy|Horror",
"13::Balto (1995)::Animation|Children's",
"14::Nixon (1995)::Drama",
};
for (String e : s) {
String[] infos = e.split("::|\\s*\\(|\\)::");
String number = infos[0];
String title = infos[1];
String releaseDate = infos[2];
String[] genres = infos[3].split("\\|");
System.out.printf("number=%s title=%s releaseDate=%s genres=%s%n",
number, title, releaseDate, Arrays.toString(genres));
}
输出
number=11 title=American President, The releaseDate=1995 genres=[Comedy, Drama, Romance]
number=12 title=Dracula: Dead and Loving It releaseDate=1995 genres=[Comedy, Horror]
number=13 title=Balto releaseDate=1995 genres=[Animation, Children's]
number=14 title=Nixon releaseDate=1995 genres=[Drama]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.