检索包含指定子串的行
例题描述和简单分析
有 Excel 文件 assignment.xlsx,数据如下所示:
1234 |
qwer |
asdf |
zxcv |
ghjk |
tyui |
4567 |
xcvb |
zgheib |
dfgdfh |
1111 |
hjkl |
2222 |
5rw34 |
11zgheib22 |
25twq |
qqqq |
eeee |
2222 |
33333 |
123 |
zgh |
eib |
4321 |
找到所有包含串 zgheib 的单元格,并在控制台输出该单元格所在的行,结果如下:
zgheib dfgdfh 1111 hjkl
2222 5rw34 11zgheib22 25twq
解法及简要说明
在集算器中编写脚本 p1.dfx,如下所示:
A |
|
1 |
=file("assignment.xlsx").xlsimport@s() |
2 |
=A1.split("\n").select(pos(~,"zgheib")).concat@n() |
3 |
>output(A2) |
简要说明:
A1 Excel读成由制表符作为列分隔符,换行符作为行分隔符的串
A2 A1串按换行符拆分成序列,找出当前串中包含子串zgheib的成员,结果序列按换行符拼成串
A3 结果输出到控制台
JAVA 集成这段代码的方法可参考:《Java 如何调用 SPL 脚本》。
https://stackoverflow.com/questions/61406631/search-algorithm-for-excel-document-in-java
英文版