读取两个文件(文本)并比较常用值并输出字符串?

时间:2012-02-01 16:45:28

标签: java parsing

问题:我有两个文件,其中包含序列号,项目,价格,位置和其他文件列表。所以我想比较两个文件并打印输出在file1中重复项目的次数和序列号。

Text1文件将

enter image description here

Text2文件将

enter image description here

输出应为

enter image description here

因此file1没有按正确顺序格式化,文件2按顺序排列(逐行)。

5 个答案:

答案 0 :(得分:3)

由于您没有明显的代码或努力,我只会提示/指导您使用一些工具。

用于解析字符串:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

从文件中读取:http://www.roseindia.net/java/beginners/java-read-file-line-by-line.shtml

我建议首先阅读#2文件,然后将这些值保存到arraylist中,以便稍后在搜索时进行迭代。

答案 1 :(得分:0)

好的,我的方法是

  1. 将file1和file2读入字符串
  2. “拆分”文件1中的字符串以及基于“,”的file2(如果正在使用的话)
  3. 检查每个第3项中的项目,这样我的迭代每次都会迭代+3(如果不按顺序排列,你可能需要排序)
  4. 如果找到存储在Array,ArrayList等中,如果存在更多项目,请返回步骤3。否则停止

答案 2 :(得分:0)

即使你的file1格式不正确,它的内容也有一些你可以用来成功读取它的模式。

对于每个项目,它具有所有信息(即序列号,名称,价格,位置),但不是按特定顺序。因此,当您从file1 -

中读取每个项目时,您已经注意并使用以下模式
  • 序列号始终为普通整数。
  • 价格有$.字符。
  • 地点长度为2个字符,全部为首都。
  • 而且名称是一个字符串,不能是上述任何一种。

答案 3 :(得分:0)

单片JAVA代码无法最好地解决这些问题。如果您没有工具约束,那么建议的解决方法是将数据从文件1导入到数据库表中,然后从程序中运行查询以获取您喜欢的任何信息。您可以根据项目轻松选择序列号,并根据位置对其进行分组。

这种方法将确保您能够跟上不断变化的要求,如果您的文件很大,您将获得良好的性能。

我希望你精通SQL和数据库工具,所以我没有发布任何细节。

答案 4 :(得分:0)

使用正则表达式。

Step one, tracing and splitting at [\d,], store results in map
Step two, read in the word from the second file. say it's "pen"
Step three, do regex search "pen" on each string within the map.
Step four, if the above returns true , do something like ([A-Z][A-Z],) on each string within the map.