找回密码
 加入
搜索
查看: 1530|回复: 5

[网络通信] 【已解决】请问StringInStr能不能一次匹配多个?

[复制链接]
发表于 2020-2-26 13:05:43 | 显示全部楼层 |阅读模式
本帖最后由 229989799 于 2020-2-26 14:03 编辑

今年报名有300个运动员人名。我知道去年参赛的选手8个人名字,,我想匹配一下这8个人在不在300个运动员里面。
用StringInStr我要匹配8次才能确定他们在不在里面。。有没有什么办法写一条代码就能匹配8个人有没在呢?
$file = FileOpen("c:\a.txt")
$read = FileRead($file)
FileClose($file)
$pipei = StringInStr($read,"张子文")
If $pipei > 0 Then
MsgBox(0,"","他在300人名单内")
Else
MsgBox(0,"","他没参加!")
EndIf
这样一次只能匹配1人。水平有限呀。
感觉正则应该可以做到,可惜不懂正则。 麻烦指点一下方法


已解决,方法请看后面版主回复。
发表于 2020-2-26 13:49:44 | 显示全部楼层
$file = FileOpen("c:\a.txt")
$read = FileRead($file)
FileClose($file)
Local $sLst = '李梓强|王宇天|邹子豪|陆伟|刘乐明|龚强|涂文文|刁喜'
$pipei = StringRegExp($read, $sLst, 3)
Local $ii, $sYes = '', $sNo = ''
For $ii = 0 To UBound($pipei) - 1
        $sYes &= $pipei[$ii] & '|'
Next
$sYes = StringTrimRight($sYes, 1)
$sNo = StringRegExpReplace($sLst, $sYes, '')
$sNo = StringRegExpReplace($sNo, '\|{2,}', '|')
MsgBox(0, UBound($pipei) & ' 人参加了比赛', '参加了比赛的人员: ' & $sYes & @LF & '未参加比赛的人员: ' & $sNo)

点评

多谢热心版竹~。  发表于 2020-2-26 13:59
发表于 2020-2-26 13:09:49 | 显示全部楼层
把8个人名用“|”连接后正则
$aName = StringRegExp($read, '张三|李四|麻子', 3)
 楼主| 发表于 2020-2-26 13:10:50 | 显示全部楼层
afan 发表于 2020-2-26 13:09
把8个人名用“|”连接后正则
$aName = StringRegExp($read, '张三|李四|麻子', 3)

多谢afan版主,
 楼主| 发表于 2020-2-26 13:38:50 | 显示全部楼层
本帖最后由 229989799 于 2020-2-26 13:41 编辑
afan 发表于 2020-2-26 13:09
把8个人名用“|”连接后正则
$aName = StringRegExp($read, '张三|李四|麻子', 3)
<div class="blockcode"><blockquote>$file = FileOpen("c:\a.txt")
$read = FileRead($file)
FileClose($file)
$pipei = StringRegExp($read,'李梓强|王宇天|邹子豪|陆伟|刘乐明|龚强|涂文文|刁喜', 3)
MsgBox(0,"",UBound($pipei)& " 人参加了比赛")


;对正则不懂,只知道有4人参赛;如何区分或者分辨出哪几人参加了,哪几人没参加呢?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-25 00:34 , Processed in 0.082486 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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