开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1053|回复: 10
收起左侧

[求助] 关于快速寻找数组中某文本所在位置和次数的求助

[复制链接]
结帖率:90% (28/31)
发表于 2023-8-1 17:05:59 | 显示全部楼层 |阅读模式   黑龙江省哈尔滨市
  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
数组文本型0
a文本型 
加入成员 (数组, “1/-1--2--3--4--5--6--7--8--9-”)
加入成员 (数组, “2/-11--22--33--44--55--66--77--88--99-”)
加入成员 (数组, “3/-111--22--333--444--555--666--777--888--999-”)
加入成员 (数组, “4/-1111--22--3333--4444--5555--6666--7777--8888--9999-”)
加入成员 (数组, “5/-11111--22222--33333--44444--55555--66666--77777--88888--99999-”)
加入成员 (数组, “6/-111111--222222--333333--444444--555555--666666--777777--888888--999999-”)
加入成员 (数组, “7/-1111111--2222222--3333333--4444444--5555555--6666666--7777777--8888888--9999999-”)
加入成员 (数组, “8/-11111111--22222222--33333333--44444444--55555555--66666666--77777777--88888888--99999999-”)
加入成员 (数组, “9/-111111111--222222222--333333333--444444444--555555555--666666666--777777777--888888888--999999999-”)
加入成员 (数组, “10/-1111111111--2222222222--3333333333--4444444444--5555555555--6666666666--7777777777--8888888888--9999999999-”)
加入成员 (数组, “11/-11111111111--22222222222--33333333333--44444444444--55555555555--66666666666--77777777777--88888888888--99999999999-”)
' 假设这段数组是我获取到的, 我需寻找出-22-这个文本在这段数组中出现的次数,以及位置,如果使用计次循环是真的太慢了 因为我实际要寻找的数组量大概在20W
' 使用hashmap没有发现有模糊查找值的办法


签到天数: 24 天

发表于 2023-8-1 17:13:19 | 显示全部楼层   山东省潍坊市
  
子程序名返回值类型公开备 注
数组_寻找数组整数型 寻找指定成员在数组中出现的次数,
参数名类 型参考可空数组备 注
待查找的数组文本型
待查找的成员文本型
寻找到的数组整数型返回出现的位置数组信息


精易模块这个不行么
回复 支持 反对

使用道具 举报

结帖率:90% (28/31)

签到天数: 14 天

 楼主| 发表于 2023-8-1 17:24:05 | 显示全部楼层   黑龙江省哈尔滨市
时髦猪 发表于 2023-8-1 17:13
[e=4].版本 2

.子程序 数组_寻找数组, 整数型, , 寻找指定成员在数组中出现的次数,

这个不是搜索 并且慢
回复 支持 反对

使用道具 举报

签到天数: 24 天

发表于 2023-8-1 17:27:18 | 显示全部楼层   山东省潍坊市
可以改成搜索
11.png
慢不慢我不清楚 你可以试试
其实也是循环查找
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
数组文本型0 

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
加入成员 (数组, “1/-1--2--3--4--5--6--7--8--9-”)
加入成员 (数组, “2/-11--22--33--44--55--66--77--88--99-”)
加入成员 (数组, “3/-111--22--333--444--555--666--777--888--999-”)
加入成员 (数组, “4/-1111--22--3333--4444--5555--6666--7777--8888--9999-”)
加入成员 (数组, “5/-11111--22222--33333--44444--55555--66666--77777--88888--99999-”)
加入成员 (数组, “6/-111111--222222--333333--444444--555555--666666--777777--888888--999999-”)
加入成员 (数组, “7/-1111111--2222222--3333333--4444444--5555555--6666666--7777777--8888888--9999999-”)
加入成员 (数组, “8/-11111111--22222222--33333333--44444444--55555555--66666666--77777777--88888888--99999999-”)
加入成员 (数组, “9/-111111111--222222222--333333333--444444444--555555555--666666666--777777777--888888888--999999999-”)
加入成员 (数组, “10/-1111111111--2222222222--3333333333--4444444444--5555555555--6666666666--7777777777--8888888888--9999999999-”)
加入成员 (数组, “11/-11111111111--22222222222--33333333333--44444444444--55555555555--66666666666--77777777777--88888888888--99999999999-”)
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
找到的整数型0
数组_寻找数组 (数组, “-22-”, 找到的)
调试输出 (找到的)
子程序名返回值类型公开备 注
数组_寻找数组整数型 寻找指定成员在数组中出现的次数,
参数名类 型参考可空数组备 注
待查找的数组文本型
待查找的成员文本型
寻找到的数组整数型返回出现的位置数组信息
变量名类 型静态数组备 注
i整数型 
计次循环首 (取数组成员数 (待查找的数组), i)
系统_处理事件 ()
' 如果真 (待查找的成员 = 待查找的数组 [i])如果真 ()
' 加入成员 (寻找到的数组, i)
如果真 (寻找文本 (待查找的数组 [i], 待查找的成员, 1, ) ≠ -1)
加入成员 (寻找到的数组, i)

计次循环尾 ()
返回 (取数组成员数 (寻找到的数组))
子程序名返回值类型公开备 注
系统_处理事件 比普通的处理事件速度要快3倍左右;
如果真 (GetInputState () ≠ 0)
处理事件 ()


i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2023-8-1 17:32):
.版本 2

.DLL命令 GetInputState, 整数型, "user32", "GetInputState"
回复 支持 反对

使用道具 举报

结帖率:90% (28/31)

签到天数: 14 天

 楼主| 发表于 2023-8-1 17:40:28 | 显示全部楼层   黑龙江省哈尔滨市
时髦猪 发表于 2023-8-1 17:27
可以改成搜索

慢不慢我不清楚 你可以试试

老哥这个方法我试过了 不行的 因为我要处理的不是这个提供的例子 我要操作的数值非常大 不能用计次循环
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2023-8-1 19:00:35 | 显示全部楼层   河北省邯郸市
文本每行长度也不一样吗
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 10 天

发表于 2023-8-1 19:53:57 | 显示全部楼层   贵州省*
-22-  2的的个数确不确定 数量不确定只是取次数 可以用正则表达式【 --22*-- 】数量确定可以用快速文本对象 数量不确定还要取位置和次数 暂时没有想出高效的算法
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 10 天

发表于 2023-8-1 19:57:57 | 显示全部楼层   贵州省*
数量不确定 只取出现次数 可以用正则 数量确定的 取位置和次数 直接用快速文本对象就可以了 游标循环+1就取出来了数量不确定还有同时取出次数和位置 低效的算法不想发
正则222.png
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 7 天

发表于 2023-8-1 20:17:14 | 显示全部楼层   重庆市重庆市
这种情况下还用数组 就是你的错了
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2023-8-1 21:47:21 | 显示全部楼层   河北省邯郸市
37万条用了4秒多,你电脑配置好点应该速度更快

  
子程序名返回值类型公开备 注
搜索文本  
参数名类 型参考可空数组备 注
欲搜索文本文本型
变量名类 型静态数组备 注
文件号整数型 
文本文本型 
文本数组文本型0
变量地址整数型 
搜索结果整数型 
i整数型 
文本长度整数型 
搜索结果文本文本型 
时间整数型 
内存地址整数型 
文本行整数型 
文本行长度整数型 
偏移整数型 
字节集字节集 
文本位置整数型 
时间 = 取启动时间 ()
文件号 = 打开文件 (取当前目录 ()“\待处理文本.txt”, 1, )
文本 = 读入文本 (文件号, )
文本长度 = 取文本长度 (文本)
关闭文件 (文件号)
内存地址 = 申请内存 (4 (取整 (文本长度 ÷ 4) + 1), )
写到内存 (文本, 内存地址, )
字节集 = 指针到字节集 (内存地址, 4 (取整 (文本长度 ÷ 4) + 1))
文件号 = 打开内存文件 ()
循环判断首 ()
文本行 = 寻找字节集 (字节集, { 13, 10 }, 偏移 + 1) + 1
文本行长度 = 文本行 - 文本位置
如果 (文本行 > 0)
i = i + 1
文本位置 = 文本行

跳出循环 ()

循环判断首 ()
搜索结果 = 寻找字节集 (指针到字节集 (内存地址 + 偏移, 文本行长度), 到字节集 (欲搜索文本), 搜索结果 + 取字节集长度 (到字节集 (欲搜索文本)))
如果 (搜索结果 ≥ 1)
写文本行 (文件号, 到文本 (i)“|”到文本 (搜索结果))
偏移 = 偏移 + 文本行长度

循环判断尾 (搜索结果 ≥ 1)
循环判断尾 (文本行 > 0)
移到文件首 (文件号)
搜索结果文本 = 读入文本 (文件号, )
关闭文件 (文件号)
文件号 = 打开文件 (取当前目录 ()“\搜索结果文本.txt”, 4, )
写出文本 (文件号, 搜索结果文本)
关闭文件 (文件号)
调试输出 (取启动时间 () - 时间)


i支持库列表   支持库注释   
spec特殊功能支持库

回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表