将K=V格式文本整理成二维表
文本文件的每行由空格分隔成 4 列,第 1 列是 type,值是 student 或 teacher,一定存在。第 2-4 列分别是 name、age、city,由逗号分隔为列名和值两部分,可能存在缺失。
````
student name=james age=13 city=toronto
teacher name=joe age=31 city=chicago
student age=21 city=paris
student city=mobile
````
用 Java 实现:将这个文本文件整理成规范的二维表。
type |
name |
age |
city |
student |
james |
13 |
toronto |
teacher |
joe |
31 |
chicago |
student |
21 |
paris |
|
student |
mobile |
SPL代码:
A |
|
1 |
=create(type,name,age,city) |
2 |
=file("data.txt").read@n() |
3 |
=A2.(A1.record((t=~.split@1(""))(1)|t(2).property().align(["name","age","city"],name).(value))) |
4 |
return A1 |
A1:新建空的二维表
A2:按行将文本文件读为序列
A3:将A2的每一行解析成记录,依次写入A1。函数split@1按分隔符将字符串分成2部分。property解析name=value形式的字符串。align将一个序列按另一个序列的顺序对齐。
Java 集成 SPL 可参 Java 如何调用 SPL 脚本
英文版
跟着练一下新语法,~n 是 ~(n) 的简写😄