怎样判断一个变量的值是否包含指定的字符
本帖最后由 东京恶魔 于 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:36 编辑
If StringRegExp($1, '(?<=\D|^)100(?=\D|$)') Then MsgBox(0, '', '含有100') 本帖最后由 user3000 于 2012-4-8 18:38 编辑
看错题意. (已编辑发言)
向 A 大致礼! 用正则就可以了 回复 4# zch11230
会发这种问题帖子的人一般不会正则,会正则的人技术也够强悍了!(PS:还看不懂正则) 回复 5# pp648852
我觉得正则入门简单精通难 在我点进这篇帖子时还没有人回复 只是想到可以用正则 而我会的都是一些非常简单的比如这次我就只会\D(100)\D不会老大那么标准的表达式。 本来想回答的,但是看到正则了。不好意思再献丑。 本帖最后由 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再想想吧,大概逻辑吧,好像有点问题 If StringRegExp($1, '\b100\b') Then MsgBox(0, '', '含有100') 回复 9# 3mile
这恐怕不行,不过不确定lz的具体要求
If StringRegExp('100100', '\b100\b') Then MsgBox(0, '', '含有100') 回复 10# netegg
如果100100可以匹配的话,那么10000一定可以匹配. 本帖最后由 netegg 于 2012-4-9 10:10 编辑
回复 11# 3mile
不会吧,匹配出100的话,10000是配不出来的
msgbox(0,0,stringinstr('100100', '100',2)&stringinstr('100100', '10000',2)) 回复 12# netegg
蛋蛋兄,你好像理解错我的意思了.
如果字符串'100100'以'100'作为关键字进行匹配,如果结果返回真的话
那么字符串'10000'以'100'作为关键字进行匹配,结果也返回真
PS:语言能力有限,表达很吃力. 本帖最后由 netegg 于 2012-4-9 10:23 编辑
回复 13# 3mile
这个对,但是楼主的意思好象是对于同一字符串,只能匹配到100不能匹配到10000,也就是最起码第四位不能为0,或者说是100后面的第一位不能是0
所以即使10000匹配出100后续还要判断100后面跟的是不是0 本帖最后由 gapkiller 于 2012-4-9 10:37 编辑
If StringInStr($1, '100') And StringInStr($1, '1000')=0 Then
...
EndIf
页:
[1]
2