将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 脚本

来源:https://stackoverflow.com/questions/75925781/extract-specific-string-from-java-without-using-grep-or-split