有序分组后拼串
【问题】
要用Java写个东西读取txt中的数据,若id1或者id2的值不同,就插入END,START(详细见结果),最后只输出修改后的id3列。我对java不熟,读入txt和写出新txt还是能自己弄的,但是不会比较id1的值或者id2的值,请大家帮忙,最好带注释,谢谢 源文件:
id1 id2 id3
100037 1 Q
100037 1 SR
100037 1 Q
100037 1 SR
100039 1 Q
100039 1 SR
100044 1 Q
100044 1 SR
100048 1 Q
100048 1 Q
100048 1 SR
100048 2 Q
100048 2 Q
100048 2 SR
100078 1 Q
100078 1 SH
100078 1 SR
100078 1 Q
希望得到的结果:
START
Q
SR
Q
SR
END
START
Q
SR
END
START
Q
SR
END
START
Q
Q
SR
END
START
Q
Q
SR
END
START
Q
SH
SR
Q
END
【回答】
Java硬写很麻烦,用SPL只要简单3行:
A |
|
1 |
=file("E:\\source.txt").import@t() |
2 |
=A1.group@o(id1,id2).conj("START"|~.(id3)|"END") |
3 |
=file("E:\\result.txt").export(A2) |
A1:读取文本文件source.txt中的内容。
A2:按照id1和id2分组,并在每组的id3前后分别加上START和END。
A3:将A2结果导出到result.txt中。
上述代码很容易集成到JAVA,参考Java 如何调用 SPL 脚本