如何拆出字串中的数值并排序

 

通常情形下,一列数据都是整体参与排序,但如果数据是由字母跟序号组合在一起,比如名字加序号的一列数据:

Mike105

Rose11

Rose1

Rose5

Mike6

现在需要先按名字排序,再按序号排序。比如Mike6要排在Mike105前面,期望的结果如下:

Mike6

Mike105

Rose1

Rose5

Rose11

这个需求看似简单,但真要考虑实现它的步骤时,就会发现还真不是那么容易。就算是文件不够大的情形,也需要先按行读取文件,将数据拆分为两列后,先按名字列排序,当名字列同时,再根据序号列局部排。而这种复合排序,一般没有现成的函数,完全需要自己实现。另外,考虑文件特别大的情形时,还得使用文件缓存来进行排序,这些代码实现起来都特别繁琐。

这种情况,如果有集算器就方便多了,用SPL实现只要一句话:

file("d:/data.txt").import().sort(#1.words@w())

 

集算器脚本SPL不光能轻松排序结构化的文本,对它做分组,过滤也都非常方便,甚至还能关联计算多个文件。具体内容可以参考:SPL 结构化文本计算

 

集算器是进行文件数据源处理的专业工具,可以方便地进行 TXTExcelXmlJsonCSVini 等各种文件数据的混合计算、入库以及导出等工作。桌面级计算工具,即装即用,配置简单,调试功能完善,可设置断点、单步执行,每步执行结果都可查看。语法简单,符合人的自然思维,比其他高级开发语言更简单。请参阅文件处理的应用场景

 

SPL也能很方便地嵌入到JAVA应用,可参考:Java 如何调用 SPL 脚本

具体使用方法可参考: 如何使用集算器