【问题标题】:How do i parse a string to get specific information using java?如何使用 java 解析字符串以获取特定信息?
【发布时间】:2016-02-14 06:55:59
【问题描述】:

这是文件中的一些行,我不知道如何解析它以提取 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("::|\\|"); 方法来解析它,但我无法解析出发布日期。

谁能帮帮我!

【问题讨论】:

    标签: java string parsing split delimiter


    【解决方案1】:

    最简单的方法是通过正则表达式匹配,类似这样

      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 并在循环中单独处理。

    【讨论】:

    • 天哪,我什至不知道如何编码。可以举个例子吗
    【解决方案2】:

    试试这个

    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]
    

    【讨论】:

      猜你喜欢
      • 2019-12-11
      • 2020-12-28
      • 1970-01-01
      • 2010-09-13
      • 2012-12-28
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多