tang_ge 发表于 2022-7-8 18:01:44

[算法分享]提取出文本中的 DR 码

本帖最后由 tang_ge 于 2022-7-25 10:45 编辑

虽然使用正则可以快速提取出文本中的 DR 码
正则文本:
\

效果:

对于单个 DR 码很好用,但是多个就出现问题(匹配到的结果不是我们想要的),所以要换思路,想到之前群友分享的用 精益模块 中的 文本_* 操作提取 DR 码,研究了下终于搞出可以稳定运行的代码



在提取出 DR 码之后利用每个参数间用“,”分割的特点,使用文本分割转为数组进行下一步处理


这里写了一个 Class_Code 类来对 DR 码转换为 Json 文本

.版本 2

.程序集 Class_Code
.程序集变量 Json, 类_json

.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用

.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用

.子程序 GetParam, 文本型, 公开
.参数 Key, 文本型

返回 (Json.取通用属性 (“Data.” + Key, ))


.子程序 SetParam, , 公开
.参数 Key, 文本型
.参数 Value, 文本型
.局部变量 _Json, 类_json

_Json.置属性 (Key, Value, )
Json.置属性 (“Data”, _Json.取数据文本 (), 真)


.子程序 SetParams, , 公开
.参数 Params, 文本型, 数组
.局部变量 i, 整数型
.局部变量 p, 文本型

.计次循环首 (取数组成员数 (Params), i)
    p = Params
    SetParam (文本_取左边 (p, “=”, , ), 文本_取右边 (p, “=”, -1, ))
.计次循环尾 ()


.子程序 GetType, 文本型, 公开

返回 (Json.取通用属性 (“Type”, ))


.子程序 SetType, , 公开
.参数 Type, 文本型

Json.置属性 (“Type”, Type, )


.子程序 GetCodeData, 文本型, 公开

返回 (Json.取数据文本 ())



当然还用到了取出数组中指定范围内的一个函数:
.版本 2

.子程序 数组_取指定范围, 逻辑型
.参数 Start, 整数型
.参数 End, 整数型
.参数 Ref_List, 文本型, 参考 数组
.局部变量 i, 整数型
.局部变量 step, 整数型
.局部变量 res, 文本型, , "0"

.如果真 (Start > End 或 End > 取数组成员数 (Ref_List) 或 Start < 1)
    返回 (假)
.如果真结束
step = End - Start + 1
.计次循环首 (step, i)
    加入成员 (res, Ref_List )
.计次循环尾 ()
Ref_List = res
返回 (真)




最终结果:


源码:
**** Hidden Message *****


*需要精益模块


玄色 发表于 2022-7-8 19:07:35

看了楼主的帖子,我只想说一句很好很强大!

萨比 发表于 2022-10-30 22:48:47

谢谢分享

keira 发表于 2022-10-31 14:22:53

1

你和我和 发表于 2023-6-6 19:09:35

6666666

feto 发表于 2023-6-17 21:33:18

强大的易语言能力
页: [1]
查看完整版本: [算法分享]提取出文本中的 DR 码