2012-02-01 105 views
0

问题:我有两个文件,一个是序列号,项目,价格,位置和其他文件的项目列表。所以我想比较两个文件,并用序列号打印文件1中重复项目的次数。读取两个文件(文本)并比较公共值并输出字符串?

文本1文件将有

enter image description here

文本2文件将有

enter image description here

输出应该是

enter image description here

所以在F ile1未按正确的顺序格式化,文件2按顺序(逐行)。

回答

0

好了我的方法,这将是

  1. 阅读在文件1和文件2成字符串
  2. “分割”在基于文件1,以及文件2串“”如果这是正在使用
  3. 检查项目在每第三个,所以我的迭代将迭代+3每次(您可能需要排序,如果不是为了这两个)
  4. 如果发现存储在数组,ArrayList等如果出现更多项目,请返回步骤3。否则停止
0

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

对于每个商品,它包含所有信息(即序列号,名称,价格,位置),但不是按照某个顺序。因此,在阅读文件1中的每个项目时,请注意并使用以下图案 -

  • 序列号始终为纯整数。
  • 价格有$.字符。
  • 位置长度为2个字符,全部为大写字母。
  • 和名称是一个字符串不能是以上任何。
0

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

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

我希望你对SQL和DB工具非常熟悉,所以我没有发布任何细节。

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. 
相关问题