找回密码
 加入
搜索
查看: 7804|回复: 17

[AU3基础] 怎样判断一个变量的值是否包含指定的字符

 火.. [复制链接]
发表于 2012-4-8 18:12:57 | 显示全部楼层 |阅读模式
本帖最后由 东京恶魔 于 2012-4-12 14:12 编辑

我把一段文字复制到了粘贴板中,然后用ClipGet ( ) 获取了粘贴板的内容,把这个内容赋值给变量$1
现在的问题是有什么办法判断变量$1中是否包含指定的字符(比如“100”)
用过StringInStr来判断变量$1,还有没有更好的办法?
如果用StringInStr来判断的话,假如复制的文本里有10000这个数,那么我如果判断100是否存在的话还是会成功,但其实没有100,只有10000.
请教各位老师这个问题怎么解决。


续:
用了afan的表达式完美解决,后来我学了下正则,发现正则入门还是比较简单的,多多实践下就能有所收获,根据afan的正则改了一下
        $clip=ClipGet();;;判断剪贴盘内容
        $ftp=StringRegExp($clip,'(?<=\b|^)ftp://(?=.|$)',0)    ;;;判断链接字符串
        $http=StringRegExp($clip,'(?<=\b|^)http://(?=.|$)',0)
        $magnet=StringRegExp($clip,'(?<=\b|^)magnet:(?=.|$)',0)
        $thunder=StringRegExp($clip,'(?<=\b|^)thunder://(?=.|$)',0)
        $Flashget=StringRegExp($clip,'(?<=\b|^)Flashget://(?=.|$)',0)
        $qqdl=StringRegExp($clip,'(?<=\b|^)qqdl://(?=.|$)',0)
        $ed2k=StringRegExp($clip,'(?<=\b|^)ed2k://(?=.|$)',0)
        
        If $ftp=1 Or $http=1 Or $magnet=1 Or $thunder=1 Or $flashget=1 Or $qqdl=1 Or $ed2k=1 Then
                MsgBox (0,"","1")
        EndIf
        
因为还需要判断剪贴板里是否有“链接”信息,所以照着改了下。 代码如上...
发表于 2012-4-8 18:34:04 | 显示全部楼层
本帖最后由 afan 于 2012-4-8 18:36 编辑
If StringRegExp($1, '(?<=\D|^)100(?=\D|$)') Then MsgBox(0, '', '含有100')

评分

参与人数 1金钱 +30 收起 理由
haijie1223 + 30 向A版学习

查看全部评分

发表于 2012-4-8 18:34:16 | 显示全部楼层
本帖最后由 user3000 于 2012-4-8 18:38 编辑

看错题意. (已编辑发言)
向 A 大致礼!
发表于 2012-4-8 18:34:50 | 显示全部楼层
用正则就可以了
发表于 2012-4-8 21:40:54 | 显示全部楼层
回复 4# zch11230

会发这种问题帖子的人一般不会正则,会正则的人技术也够强悍了!(PS:还看不懂正则)
发表于 2012-4-8 23:06:08 | 显示全部楼层
回复 5# pp648852


    我觉得正则入门简单精通难   在我点进这篇帖子时还没有人回复 只是想到可以用正则 而我会的都是一些非常简单的  比如这次我就只会\D(100)\D  不会老大那么标准的表达式。
发表于 2012-4-9 00:42:51 | 显示全部楼层
本来想回答的,但是看到正则了。不好意思再献丑。
发表于 2012-4-9 01:12:38 | 显示全部楼层
本帖最后由 netegg 于 2012-4-9 01:43 编辑

Local $aA = StringSplit($string, '100', 1)
Local $ret = True
For $i = 1 To $aA[0]
        ConsoleWrite(StringLeft($aA[$i], 1) & @cr)
        If Not(StringLeft($aA[$i], 1)) Then
                $ret = Not $ret
                ExitLoop
        EndIf
Next
MsgBox(0, 0, $ret)

lz再想想吧,大概逻辑吧,好像有点问题
发表于 2012-4-9 09:49:50 | 显示全部楼层
If StringRegExp($1, '\b100\b') Then MsgBox(0, '', '含有100')
发表于 2012-4-9 10:04:30 | 显示全部楼层
回复 9# 3mile
这恐怕不行,不过不确定lz的具体要求
If StringRegExp('100100', '\b100\b') Then MsgBox(0, '', '含有100')
发表于 2012-4-9 10:05:52 | 显示全部楼层
回复 10# netegg
如果100100可以匹配的话,那么10000一定可以匹配.
发表于 2012-4-9 10:07:12 | 显示全部楼层
本帖最后由 netegg 于 2012-4-9 10:10 编辑

回复 11# 3mile
不会吧,匹配出100的话,10000是配不出来的
msgbox(0,0,stringinstr('100100', '100',2)&stringinstr('100100', '10000',2))
发表于 2012-4-9 10:16:34 | 显示全部楼层
回复 12# netegg
蛋蛋兄,你好像理解错我的意思了.
如果字符串'100100'以'100'作为关键字进行匹配,如果结果返回真的话
那么字符串'10000'以'100'作为关键字进行匹配,结果也返回真

PS:语言能力有限,表达很吃力.
发表于 2012-4-9 10:20:24 | 显示全部楼层
本帖最后由 netegg 于 2012-4-9 10:23 编辑

回复 13# 3mile
这个对,但是楼主的意思好象是对于同一字符串,只能匹配到100不能匹配到10000,也就是最起码第四位不能为0,或者说是100后面的第一位不能是0
所以即使10000匹配出100后续还要判断100后面跟的是不是0
发表于 2012-4-9 10:35:10 | 显示全部楼层
本帖最后由 gapkiller 于 2012-4-9 10:37 编辑


If StringInStr($1, '100') And StringInStr($1, '1000')=0 Then
    ...
EndIf
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-14 15:12 , Processed in 0.119562 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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