我面临着一个关于解析这篇文章的问题。我想用唯一的account#来拆分它。如下所示:
Account#: 1
Data1
Data2
Data3
Account#: 1
Data4
Data5
Data6
Account#: 1
Data7
Data8
Data9
Account#: 2
Data10
Data11
Data12
Account#: 2
Data13
Data14
Data15
Account#: 3
Data16
Data17
Data18
Account#: 3
Data19
Data20
Data21结果应该在我的第一个索引中,它将由数据1-9的Account#:1组成,然后在我的第二个索引Account#:2中,数据为10-15,依此类推。(这里的“Data”由新行等组成)
我正在考虑使用拆分(正则表达式),但是,如何对account#的范围进行正则表达式?正则表达式是否有可能匹配唯一值?
感谢您的回复。
发布于 2014-08-01 23:18:52
使用正则表达式仍然需要读取/扫描文件。reg exp只是一种有效地扫描数据的方式,一旦从文件中读取。
为什么不实现一些简单的东西来逐行读取文件一次。当您读取它并遇到每个Account #时,将随后的数据写入该account #的唯一文件,或者写入内存中的数据结构,例如由Account #键入的java.util.Map (如果数据适合内存)。
如果您高效地编写此代码,并将数据写入每个account #的输出文件,则只需读取输入文件一次(这是正则表达式方法无论如何都需要做的),并且可以在检测到数据用于哪个account #时写出到每个account文件。如果文件不是按帐号排序的,您可以一次打开一定数量的文件输出流,仅当到达文件末尾或打开的流太多时才关闭它们。如果您需要进一步附加到帐号的文件中,只需在附加模式下重新打开。输入文件可以是任何大小,处理时间与其大小成正比。
正则表达式用于在数据中查找可定义的模式,而不是用于查找唯一值。
https://stackoverflow.com/questions/25083153
复制相似问题