东京恶魔 发表于 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
        因为还需要判断剪贴板里是否有“链接”信息,所以照着改了下。 代码如上...

afan 发表于 2012-4-8 18:34:04

本帖最后由 afan 于 2012-4-8 18:36 编辑

If StringRegExp($1, '(?<=\D|^)100(?=\D|$)') Then MsgBox(0, '', '含有100')

user3000 发表于 2012-4-8 18:34:16

本帖最后由 user3000 于 2012-4-8 18:38 编辑

看错题意. (已编辑发言)
向 A 大致礼!

zch11230 发表于 2012-4-8 18:34:50

用正则就可以了

pp648852 发表于 2012-4-8 21:40:54

回复 4# zch11230

会发这种问题帖子的人一般不会正则,会正则的人技术也够强悍了!(PS:还看不懂正则)

zch11230 发表于 2012-4-8 23:06:08

回复 5# pp648852


    我觉得正则入门简单精通难   在我点进这篇帖子时还没有人回复 只是想到可以用正则 而我会的都是一些非常简单的比如这次我就只会\D(100)\D不会老大那么标准的表达式。

5735988 发表于 2012-4-9 00:42:51

本来想回答的,但是看到正则了。不好意思再献丑。

netegg 发表于 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
        ConsoleWrite(StringLeft($aA[$i], 1) & @cr)
        If Not(StringLeft($aA[$i], 1)) Then
                $ret = Not $ret
                ExitLoop
        EndIf
Next
MsgBox(0, 0, $ret)

lz再想想吧,大概逻辑吧,好像有点问题

3mile 发表于 2012-4-9 09:49:50

If StringRegExp($1, '\b100\b') Then MsgBox(0, '', '含有100')

netegg 发表于 2012-4-9 10:04:30

回复 9# 3mile
这恐怕不行,不过不确定lz的具体要求
If StringRegExp('100100', '\b100\b') Then MsgBox(0, '', '含有100')

3mile 发表于 2012-4-9 10:05:52

回复 10# netegg
如果100100可以匹配的话,那么10000一定可以匹配.

netegg 发表于 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))

3mile 发表于 2012-4-9 10:16:34

回复 12# netegg
蛋蛋兄,你好像理解错我的意思了.
如果字符串'100100'以'100'作为关键字进行匹配,如果结果返回真的话
那么字符串'10000'以'100'作为关键字进行匹配,结果也返回真

PS:语言能力有限,表达很吃力.

netegg 发表于 2012-4-9 10:20:24

本帖最后由 netegg 于 2012-4-9 10:23 编辑

回复 13# 3mile
这个对,但是楼主的意思好象是对于同一字符串,只能匹配到100不能匹配到10000,也就是最起码第四位不能为0,或者说是100后面的第一位不能是0
所以即使10000匹配出100后续还要判断100后面跟的是不是0

gapkiller 发表于 2012-4-9 10:35:10

本帖最后由 gapkiller 于 2012-4-9 10:37 编辑


If StringInStr($1, '100') And StringInStr($1, '1000')=0 Then
    ...
EndIf
页: [1] 2
查看完整版本: 怎样判断一个变量的值是否包含指定的字符