229989799 发表于 2020-2-26 13:05:43

【已解决】请问StringInStr能不能一次匹配多个?

本帖最后由 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人。水平有限呀。
感觉正则应该可以做到,可惜不懂正则。 麻烦指点一下方法


已解决,方法请看后面版主回复。

afan 发表于 2020-2-26 13:49:44

229989799 发表于 2020-2-26 13:38


$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)

afan 发表于 2020-2-26 13:09:49

把8个人名用“|”连接后正则
$aName = StringRegExp($read, '张三|李四|麻子', 3)

229989799 发表于 2020-2-26 13:10:50

afan 发表于 2020-2-26 13:09
把8个人名用“|”连接后正则
$aName = StringRegExp($read, '张三|李四|麻子', 3)

多谢afan版主,:face (1):

229989799 发表于 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人参赛;如何区分或者分辨出哪几人参加了,哪几人没参加呢?
页: [1]
查看完整版本: 【已解决】请问StringInStr能不能一次匹配多个?