开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

楼主: 彼岸光年
收起左侧

[已解决] 如何剔除相同文本

 关闭 [复制链接]
结帖率:100% (3/3)
发表于 2025-8-16 11:28:04 | 显示全部楼层   陕西省西安市
圆圈 发表于 2025-8-16 10:52
[e=0].版本 2
.支持库 spec

你这个替换完  中间应该是会出现两个空格在一块
回复

使用道具 举报

结帖率:75% (3/4)

签到天数: 3 天

发表于 2025-8-16 11:32:01 | 显示全部楼层   福建省福州市
  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
text1文本型 
text2文本型 
text1arr文本型0
xxxxxxxx文本型0
text1 = “0059 0580 0004 6006 7162 0803 6010 0029”
text2 = “0673 1208 6019 6006 5183 6037 6092 0029 0724 3380”
text1 = text1 + “ ” + text2
text1arr = 分割文本 (text1, “ ”, )
数组模块_去重复_删除重复的数据 (text1arr, xxxxxxxx)
调试输出 (xxxxxxxx)
结束 ()
子程序名返回值类型公开备 注
数组模块_去重复_删除重复的数据 去掉重复的数据  ,流下不重复的//重复全部删除,流下不重复的 (1122334)(4)
参数名类 型参考可空数组备 注
参数_文本们文本型
参数_重复数组文本型
变量名类 型静态数组备 注
局变_标记整数型0
n1整数型 
局变_对比a文本型 
m1整数型 
清除数组 (参数_重复数组)
重定义数组 (局变_标记, 假, 取数组成员数 (参数_文本们))
计次循环首 (取数组成员数 (参数_文本们) - 1, n1)
局变_对比a = 参数_文本们 [n1]
变量循环首 (n1 + 1, 取数组成员数 (参数_文本们), 1, m1)
如果 (局变_对比a = 参数_文本们 [m1])
连续赋值 (1, 局变_标记 [n1], 局变_标记 [m1])


' 无动作

变量循环尾 ()
计次循环尾 ()
' 调试输出 (局变_标记)
计次循环首 (取数组成员数 (局变_标记), n1)
如果 (局变_标记 [n1] = 0)  ' 未被标记的
加入成员 (参数_重复数组, 参数_文本们 [n1])



计次循环尾 ()


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


* 数组:14{“0059”,“0580”,“0004”,“7162”,“0803”,“6010”,“0673”,“1208”,“6019”,“5183”,“6037”,“6092”,“0724”,“3380”}
被调试易程序运行完毕


数组模块_去重复_删除重复的数据  这个还是未优化的,要再快点的  就是排序后对比了
https://bbs.ijingyi.com/forum.ph ... 14712534&extra=



下面这个会删除多余重复,保留下一个重复
  
子程序名返回值类型公开备 注
数组模块_去重复7_排序后对比 排序过的   (1122334)(1234),也是非常快的,不输给去重复6。
参数名类 型参考可空数组备 注
参数_文本文本型
参数_重复数组文本型
变量名类 型静态数组备 注
局变_原始文本开始的下标整数型跳转到下回开始对比的下标
n1整数型循环用
m1整数型重复数组的下标
局变_数组个数整数型 
' 局变_数组个数 = 取数组成员数 (参数_文本)
如果真 (取数组成员数 (参数_文本) < 2)
参数_重复数组 = 参数_文本
返回 ()

' 数组模块_快速排序_文本 (参数_文本, )
排序模块_归并排序_迭代版_文本 (参数_文本, )
重定义数组 (参数_重复数组, 假, 取数组成员数 (参数_文本))
局变_原始文本开始的下标 = 1
循环判断首 ()
变量循环首 (局变_原始文本开始的下标, 取数组成员数 (参数_文本) - 1, 1, n1)  ' 假定他现在前面几个都是重复的,开局就用变量循环
如果 (参数_文本 [n1] = 参数_文本 [n1 + 1])
' 调试输出 (参数_文本 [n1], 参数_文本 [n1 + 1], “===”)
' 相等  无动作


' 调试输出 (参数_文本 [n1], 参数_文本 [n1 + 1], “=!==!”)
m1 = m1 + 1
参数_重复数组 [m1] = 参数_文本 [n1]  ' 不相等的上一个加入去重复
局变_原始文本开始的下标 = n1 + 1  ' 不相等的下一个 跳转进去。把变量循环的开始值设置成它
' 调试输出 (m1, 局变_原始文本开始的下标, 参数_文本 [n1], “-------------------”)
跳出循环 ()

变量循环尾 ()
' 调试输出 (n1, “=============================”)
如果真 (n1 = 取数组成员数 (参数_文本))  ' 下标等于最后一个,它没办法和下一个比较了。就添加到去重复数组了
' 调试输出 (n1, 局变_原始文本开始的下标, , , 666)
m1 = m1 + 1
参数_重复数组 [m1] = 参数_文本 [局变_原始文本开始的下标]  ' 局变_原始文本开始的下标  最后两种情况,相邻的两个相等或者不相等
跳出循环 ()

循环判断尾 ()
重定义数组 (参数_重复数组, 真, m1)
' 不明白的是明明比6更紧凑,用的变量也少。还是不能大幅跑赢6///2025.6.19



回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2025-8-16 11:32:03 | 显示全部楼层   广东省佛山市
山猫啊 发表于 2025-8-16 11:00
[e=2].版本 2
.支持库 spec

大神有没有更好的办法
我怕数据量一大,运行会比较慢
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 9 天

发表于 2025-8-16 11:35:28 | 显示全部楼层   陕西省西安市
如果不在乎结果文本在一个里面可以用下面这种



  
变量名类 型静态数组备 注
文本1文本型 
文本2文本型 
分割1文本型0
文本1 = “0059 0580 0004 6006 7162 0803 6010 0029”
文本2 = “0673 1208 6019 6006 5183 6037 6092 0029 0724 3380”
分割1 = 分割文本 (文本1 + “ ” + 文本2, “ ”, )
数组_去重复 (分割1, )
调试输出 (数组_合并 (分割1, “ ”))


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



补充内容 (2025-8-16 13:59):
这个有问题   重复的会去除一个丢下一个   这个不能用
Snipaste_2025-08-16_11-34-32.png
回复

使用道具 举报

结帖率:100% (18/18)

签到天数: 1 天

发表于 2025-8-16 11:48:43 | 显示全部楼层   广东省深圳市
  
变量名类 型静态数组备 注
 
jd节点 
文本一文本型 
文本二文本型 
源文本字节集0
i整数型 
结果文本型 
文本一 = “0059 0580 0004 6006 7162 0803 6010 0029”
文本二 = “0673 1208 6019 6006 5183 6037 6092 0029 0724 3380”
源文本 = 分割字节集 (到字节集 (删首尾空 (文本一)“ ”删首尾空 (文本二)), 到字节集 (“ ”), )
计次循环首 (取数组成员数 (源文本), i)
表.加入键值对 (源文本 [i], jd)
计次循环尾 ()
重定义数组 (源文本, 假, 0)
源文本 = 表.取所有键 ()
计次循环首 (取数组成员数 (源文本), i)
结果 = 结果 + 到文本 (源文本 [i])“ ”
计次循环尾 ()
调试输出 (删首尾空 (结果))


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

评分

参与人数 1好评 +1 精币 +1 收起 理由
APPLEUFO + 1 + 1 支持开源~!感谢分享

查看全部评分

回复

使用道具 举报

签到天数: 10 天

发表于 2025-8-16 12:16:49 | 显示全部楼层   广东省广州市
  
变量名类 型静态数组备 注
文本一文本型 
文本二文本型 
文本三文本型 
z正则表达式类 
文本一 = “0059 0580 0004 6006 7162 0803 6010 0029”
文本二 = “0673 1208 6019 6006 5183 6037 6092 0029 0724 3380”
z.创建 (子文本替换 (文本一, “ ”, “\s?|”, , , )“\s?”, 文本二)
文本三 = z.替换 ()
z.创建 (子文本替换 (文本二, “ ”, “\s?|”, , , )“\s?”, 文本一)
调试输出 (z.替换 () + 文本三)


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

回复

使用道具 举报

结帖率:100% (1/1)
发表于 2025-8-16 12:42:19 | 显示全部楼层   浙江省温州市
易语言文本操作并不快, 但是如果你给换成字节集操作:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
文本1文本型 
文本2文本型 
数组整数型10000
数据字节集 
整数型 
整数型 
整数型 
结果文本型 
次数整数型 
下标整数型 
起点整数型 
时间整数型 
' 调试输出 (取代码 (“0”, ), 取代码 (“9”, ), 取代码 (“ ”, ))
计次循环首 (10000, 数)  ' 生成所有组合
文本1 = 文本1 + 取文本右边 (“0000”到文本 (数 - 1), 4)“ ”
计次循环尾 ()
' 文本1 = “0059 0580 0004 6006 7162 0803 6010 0029”
文本2 = “0673 1208 6019 6006 5183 6037 6092 0029 0724 3380”
时间 = 取启动时间 ()
计次循环首 (2, 次数)
数据 = 到字节集 (选择 (次数 = 1, 文本1, 文本2)) + { 0 }
量 = 0
计次循环首 (取字节集长度 (数据), 数)
值 = 数据 []
如果 (值 ≥ 48 值 ≤ 57)
量 = 量 × 10 + 值 - 48
值 = 量 + 1
数组 [] = 数组 [] + 1
量 = 0

计次循环尾 ()
计次循环尾 ()
数据 = 取空白字节集 (5 × 10000 + 1)
起点 = 1
计次循环首 (10000, 数)
如果真 (数组 [] = 1)
值 = 数 - 1
下标 = 3
循环判断首 ()
数据 [起点 + 下标] = 值 % 10 + 48
下标 = 下标 - 1
值 = 值 ÷ 10
循环判断尾 (值 ≠ 0)
判断循环首 (下标 ≥ 0)
数据 [起点 + 下标] = 48
下标 = 下标 - 1
判断循环尾 ()
数据 [起点 + 4] = 32
起点 = 起点 + 5

计次循环尾 ()
结果 = 到文本 (数据)
调试输出 (格式化文本 (“出现一次的数量: %.0f, 耗时: %d 毫秒”, 取文本长度 (结果) ÷ 5, 取启动时间 () - 时间))


i支持库列表   支持库注释   
spec特殊功能支持库
eAPI应用接口支持库

性能提升会非常明显, 适合频繁调用, 毕竟每次运行只需0毫秒(低于1毫秒):
0.png
回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2025-8-16 13:01:38 | 显示全部楼层   广东省佛山市
黑咖啡 发表于 2025-8-16 11:48
[e=1].版本 2
.支持库 EDataStructure
.支持库 spec

这就是去重啊
我要的是去同存异。。。
相同的6006,0029去掉,留下不同的啊
回复

使用道具 举报

结帖率:100% (8/8)

签到天数: 9 天

发表于 2025-8-16 13:39:33 | 显示全部楼层   安徽省六安市
山猫啊 发表于 2025-8-16 11:00
[e=2].版本 2
.支持库 spec

要不你仔细看看  两串文本是不同的  他需要的是 两串文本中 完全没有重复的内容

补充内容 (2025-8-16 13:40):
你不省题的么。。。

补充内容 (2025-8-16 13:42):
人家要的是把重复值完全删除  而不是保留一个。。。。而且 结果要把其他没有重复的内容整合到一起

点评

1个没合并的 1个合并的 两个都有 我的意思是 不管合不合并 或者A文本对比B文本 它是不是两个文本都有以后才会出现重复的情况   陕西省西安市  发表于 2025-8-16 13:45
我写了两个版本 让他自己选....   陕西省西安市  发表于 2025-8-16 13:44
.... 问个最简单的问题 比如A文本短 A里面没有的 会和B里面的哪个重复.. 按逻辑 不管A多长或者多短 那肯定是A和B里面都有了 才会重复啊   陕西省西安市  发表于 2025-8-16 13:43
回复

使用道具 举报

结帖率:100% (16/16)

签到天数: 1 天

发表于 2025-8-16 14:26:06 | 显示全部楼层   江苏省南京市
.版本 2
.支持库 spec

.子程序 _按钮1_被单击
.局部变量 文本一, 文本型
.局部变量 文本二, 文本型
.局部变量 数组, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 结果, 文本型

文本一 = “0059 0580 0004 6006 7162 0803 6010 0029”
文本二 = “0673 1208 6019 6006 5183 6037 6092 0029 0724 3380”
数组 = 分割文本 (文本一 + “ ” + 文本二, “ ”, )
.计次循环首 (取数组成员数 (数组), i)
    .如果真 (数组_取次数 (数组, 数组 [i]) = 1)
        结果 = 结果 + 数组 [i] + “ ”
    .如果真结束

.计次循环尾 ()
调试输出 (结果)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /2 下一条

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

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

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