【问题标题】:file parsing using tokens使用令牌解析文件
【发布时间】:2014-09-18 14:15:57
【问题描述】:

我有一个文本文件,内容如下:

item1, description #brand1,brand2

item2,描述#brand3

我有一个品牌数组列表和另一个项目数组列表。

我的代码读取并分配所有内容,直到它到达项目描述后的“#”...

    while(input.hasNextLine())
        {
            String line = input.nextLine();
            String[] token = line.split("[,#]+");

            item = token[0];
            description = token[1];

            brand = token[2];

        }  

如何让它正确读取“#”之后的内容? 我应该提到一个项目可以属于 2 个或多个品牌

【问题讨论】:

    标签: java split token


    【解决方案1】:

    先用“#”分割处理结果,再用“,”分割。

    【讨论】:

      【解决方案2】:

      我相信您正在寻找的是正则表达式 (regex)

      它允许您设置一个模式来定义数据的结构,如下所示:

      "(?<item>.+),\s(?<description>.+)\s\#\s(?<brands>.+)"
      

      (免责声明:只是一个手写的简单示例,可能无法正常工作) 然后使用匹配器将模式应用于字符串。

      我强烈建议您阅读正则表达式,或学习有关它的教程。它超级有用。 签出:http://docs.oracle.com/javase/tutorial/essential/regex/intro.html

      【讨论】:

      • 虽然正则表达式很强大,但是有很多文件格式不是正则的,不应该用正则表达式解析。请注意,应该为工作选择正确的工具,并且始终使用正则表达式工具链意味着您迟早会使用错误的工具。当我看到人们在为一个对于正则表达式来说太简单或太复杂的东西编写正则表达式时做了这么多的“编程”时,我感到畏缩。
      • Regex 是一种使用令牌从 txt 文件中解析文本行的方法——这正是所要求的。 :S
      • 同意,您的解决方案在某些方面更好,但还不够清晰(或可安全修改)。我喜欢正则表达式的强大功能,但没有任何工具适合所有环境。似乎是一个昂贵的工具包,只分割一条线,即使分割有子分割。
      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 2014-10-09
      • 2017-10-21
      • 1970-01-01
      相关资源
      最近更新 更多