精易论坛

标题: 求助,数组元素有相同的前缀项,并各自输出, [打印本页]

作者: filippo009    时间: 6 天前
标题: 求助,数组元素有相同的前缀项,并各自输出,
加入如下,我有几个数组,这里就举例两个,里面有元素内容如下:
数组1: a#0304#1,b#0304#2,c#0304#1,d#0304#1
数组2 :d#0305#1,a#0305#2,e#0305#1,f#0305#1

希望找出相同的,并输出#后面的内容:
输出 a.txt => 0304#1
                0305#1
     b.txt=>  0304#2
     c.txt=> 0304#1
     d.txt => 0304#1
              0305#1
     e.txt => 0305#1
     f.txt => 0305#1


请教大神,这种要怎么处理呢,谢谢


作者: zainex    时间: 6 天前
这代码就是输出到多个文件里:


作者: Ruang    时间: 6 天前
你这数量好像挺大的
作者: zainex    时间: 6 天前
用 节点 实现,它会在桌面创建一个txt文件夹,文件会保存到里面:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
文本文本型 
数组文本型0
正则正则表达式 
整数型 
搜索结果搜索结果 
成员文本型 
节点节点 
名称文本型 
内容文本型 
临时文本型 
属性名文本型0
目录文本型 
文本 = 文本 + “a#0304#1 b#0304#2 c#0304#1 d#0304#1 ”
文本 = 文本 + “d#0305#1 a#0305#2 e#0305#1 f#0305#1 ”
数组 = 分割文本 (文本, “ ”, )
调试输出 (数组)
正则.创建 (“([^#]+).(.+)”, )
计次循环首 (取数组成员数 (数组), 数)
成员 = 数组 []
搜索结果 = 正则.搜索 (成员, 1, )
名称 = 搜索结果.取子匹配文本 (成员, 1, )
内容 = 搜索结果.取子匹配文本 (成员, 2, )
如果真 (节点.加入属性 (名称, 内容))
节点.取文本值 (名称, 临时)
临时 = 临时 + #换行符 + 内容
节点.修改属性 (名称, 临时)

计次循环尾 ()
节点.取全部属性名 (属性名)
目录 = 取特定目录 ( #系统桌面 )“\txt”
创建目录 (目录)
计次循环首 (取数组成员数 (属性名), 数)
名称 = 属性名 []
节点.取文本值 (名称, 内容)
写到文件 (目录 + “\” + 名称 + “.txt”, 到字节集 (内容))
计次循环尾 ()


i支持库列表   支持库注释   
RegEx正则表达式支持库
EDataStructure数据结构支持库
spec特殊功能支持库
shell操作系统界面功能支持库


作者: filippo009    时间: 6 天前
zainex 发表于 2025-5-4 18:35
用 节点 实现,它会在桌面创建一个txt文件夹,文件会保存到里面:
[e=1].版本 2
.支持库 RegEx

谢谢你,看正则我一直很晕,这是输出到一个.txt ,是要各自输出到txt, 有多少.txt,,,,,,比如a.txt b.txt。。。
作者: Ruang    时间: 6 天前
  
子程序名返回值类型公开备 注
功能_数据归类  
参数名类 型参考可空数组备 注
参数_一文本型
参数_二文本型
变量名类 型静态数组备 注
总数组文本型0
计次1整数型 
计次2整数型 
前缀文本文本型 
后缀文本文本型 
节点节点 
节点名称文本型0
临时文本型0
是否存在逻辑型 
待加入文本文本型 
计次循环首 (取数组成员数 (参数_一), 计次1)  ' 合并到总数组
加入成员 (总数组, 参数_一 [计次1])
计次循环尾 ()
计次循环首 (取数组成员数 (参数_二), 计次1)  ' 合并到总数组
加入成员 (总数组, 参数_二 [计次1])
计次循环尾 ()
计次循环首 (取数组成员数 (总数组), 计次1)  ' 开始分类
前缀文本 = 取文本左边 (总数组 [计次1], 寻找文本 (总数组 [计次1], “#”, , ) - 1)
后缀文本 = 子文本替换 (总数组 [计次1], 取文本左边 (总数组 [计次1], 寻找文本 (总数组 [计次1], “#”, , ) - 1)“#”, “”, , , )
节点.取全部属性名 (临时)
计次循环首 (取数组成员数 (临时), 计次2)
是否存在 = 假
如果真 (临时 [计次2] = 前缀文本)
是否存在 = 真
跳出循环 ()

计次循环尾 ()
如果 (是否存在 = )
节点.加入属性 (前缀文本, 后缀文本)
节点.取文本值 (前缀文本, 待加入文本)
节点.修改属性 (前缀文本, 待加入文本 + “,” + 后缀文本)

计次循环尾 ()
节点.取全部属性名 (节点名称)
计次循环首 (取数组成员数 (节点名称), 计次1)  ' 输出文本
节点.取文本值 (节点名称 [计次1], 待加入文本)
临时 = 分割文本 (待加入文本, “,”, )
计次循环首 (取数组成员数 (临时), 计次2)
如果真 (计次2 = 1)
调试输出 (节点名称 [计次1]“.txt => ” + 临时 [计次2])
到循环尾 ()
调试输出 (“              ” + 临时 [计次2])
计次循环尾 ()
计次循环尾 ()


i支持库列表   支持库注释   
EDataStructure数据结构支持库
spec特殊功能支持库



节点方式

作者: Ruang    时间: 6 天前
输出结果图

截图20250504194325.png (66.21 KB, 下载次数: 0)

截图20250504194325.png

作者: zainex    时间: 6 天前
如果你是不想用正则,那么可以把上面代码中的:
  
搜索结果 = 正则.搜索 (成员, 1, )
名称 = 搜索结果.取子匹配文本 (成员, 1, )
内容 = 搜索结果.取子匹配文本 (成员, 2, )

给换成:
  
变量名类 型静态数组备 注
下标整数型 
下标 = 寻找文本 (成员, “#”, , )
名称 = 取文本中间 (成员, 1, 下标 - 1)
内容 = 取文本中间 (成员, 下标 + 1, 取文本长度 (成员))

这两段代码得到的结果是一样的。

作者: 你的猫    时间: 6 天前
  
子程序名返回值类型公开备 注
比较数组并输出  
变量名类 型静态数组备 注
数组1文本型0
数组2文本型0
i整数型 
j整数型 
元素1文本型 
元素2文本型 
前缀1文本型 
前缀2文本型 
内容1文本型 
内容2文本型 
文件号整数型 
文件名文本型 
已处理前缀文本型0
k整数型 
是否已处理逻辑型 
' 初始化数组
数组1 = 分割文本 (“a#0304#1,b#0304#2,c#0304#1,d#0304#1”, “,”, )
数组2 = 分割文本 (“d#0305#1,a#0305#2,e#0305#1,f#0305#1”, “,”, )
' 处理数组1
计次循环首 (取数组成员数 (数组1), i)
元素1 = 数组1 [i]
前缀1 = 取文本左边 (元素1, 寻找文本 (元素1, “#”, , ) - 1)
内容1 = 取文本右边 (元素1, 取文本长度 (元素1)寻找文本 (元素1, “#”, , ))
' 检查是否已经处理过这个前缀
是否已处理 = 假
计次循环首 (取数组成员数 (已处理前缀), k)
如果真 (已处理前缀 [k] = 前缀1)
是否已处理 = 真
跳出循环 ()

计次循环尾 ()
如果真 (是否已处理 = )
' 添加到已处理列表
加入成员 (已处理前缀, 前缀1)
' 创建对应文件
文件名 = 前缀1 + “.txt”
文件号 = 打开文件 (文件名, #重写, )
' 写入当前内容
写文本行 (文件号, 内容1)
' 检查数组2中是否有相同前缀
计次循环首 (取数组成员数 (数组2), j)
元素2 = 数组2 [j]
前缀2 = 取文本左边 (元素2, 寻找文本 (元素2, “#”, , ) - 1)
内容2 = 取文本右边 (元素2, 取文本长度 (元素2)寻找文本 (元素2, “#”, , ))
如果真 (前缀2 = 前缀1)
写文本行 (文件号, 内容2)

计次循环尾 ()
关闭文件 (文件号)

计次循环尾 ()
' 处理数组2中未被处理的前缀
计次循环首 (取数组成员数 (数组2), i)
元素2 = 数组2 [i]
前缀2 = 取文本左边 (元素2, 寻找文本 (元素2, “#”, , ) - 1)
内容2 = 取文本右边 (元素2, 取文本长度 (元素2)寻找文本 (元素2, “#”, , ))
' 检查是否已经处理过这个前缀
是否已处理 = 假
计次循环首 (取数组成员数 (已处理前缀), k)
如果真 (已处理前缀 [k] = 前缀2)
是否已处理 = 真
跳出循环 ()

计次循环尾 ()
如果真 (是否已处理 = )
' 添加到已处理列表
加入成员 (已处理前缀, 前缀2)
' 创建对应文件
文件名 = 前缀2 + “.txt”
文件号 = 打开文件 (文件名, #重写, )
' 写入当前内容
写文本行 (文件号, 内容2)
关闭文件 (文件号)

计次循环尾 ()






欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4