51Testing软件测试论坛

标题: 在一个字符串中如何截取到另一个字符串? [打印本页]

作者: 小飞天猪    时间: 2011-2-16 13:59
标题: 在一个字符串中如何截取到另一个字符串?
字符串为“IP: 222.27.50.*2011-02-16 17:38:04test001”
该字符串中的IP地址和日期都是随机的,我现在想截取到日期后的字符串test001,该如何实现呢?
作者: shingo0109    时间: 2011-2-16 14:52
如果test001在这个字符串最右边的话, 而且长度固定为7位的话, 可以用Right函数来实现。
不知LZ所取的"test001"是不是固定长度的?
作者: 小飞天猪    时间: 2011-2-16 15:21
回复 2# shingo0109


    非常感谢你的回答··
   test001不是个固定的长度··我难就难在这儿,不知道如何截取,不知道您还有什么高见···期待您的回答
作者: gezhirong    时间: 2011-2-16 16:21
用正则表达式:[a-z]+[0-9]+
作者: 小飞天猪    时间: 2011-2-16 16:23
回复 4# gezhirong


    谢谢您的回答,能再具体一些吗?我想到了正则,但是我不太会用···
作者: gezhirong    时间: 2011-2-16 16:32
Function reg(str1)
   Set regex=new RegExp
   regex.pattern="[a-z]+[0-9]+"
   regex.ignorecase=true
   regex.global=true
   Set matchs=regex.execute(str1)
   For each match in matchs
   msgbox match
   Next
End Function
str="IP: 222.27.50.*2011-02-16 17:38:04test001"
reg(str)
作者: hsjzfling    时间: 2011-2-16 17:50
ls的回答是要保证lz要取的那个"test001"一定是以n个小写字母开头,后面跟着m个数字的字符串,具体的正则表达式需要lz分析目标字符串的变化范围才能确定下来
作者: BesTesTer    时间: 2011-2-16 18:59
字符串中的IP地址和日期都是随机的,但是可以发现不管怎么变,字符串中都存在同一个字符":",且出现3次后就可以找到需要截取的字符串。还要考虑截取的所需字符串也可能出现":",实现的脚本如下:

Dim str : str = "IP: 222.27.50.*2011-02-16 17:38:04test001"

For i = 1 to len(str)
        If Mid(str,i,1) = ":" Then
                j = j+1
                If j = 3 Then
                        Exit for
                End If
        End If
Next

str_search = Right(str,len(str)-i-2)
作者: shingo0109    时间: 2011-2-17 10:19
同楼上方法差不多, 也是根据“:”来用正则表达式, 代码如下:
strng="IP: 222.27.50.*2011-02-16 17:38:04test001"
patrn=":"+"[0-9][0-9]"
a= regtest(strng,patrn)

bb=Right(strng, Len(strng)-InStr(1,strng,a)-2)
MsgBox "bb="&bb

Function regtest(strng,patrn)
Set regex=new regexp
regex.pattern=patrn
regex.global=true
regex.ignorecase=true
set matches=regex.execute(strng)
For each match in matches
        regtest=match
Next
End Function
作者: feiyunkai    时间: 2011-2-17 10:56
a="IP: 222.27.50.*2011-02-16 17:38:04test001"
b=split(a,":")
c=Mid(b(3),3,Len(b(3)))
MsgBox c
作者: a598824322    时间: 2011-2-17 11:37
Function reg(str1)
   Set regex=new RegExp
   regex.pattern=":[0-9][0-9].*"
   regex.ignorecase=true
   regex.global=true
   Set matchs=regex.execute(str1)
   For each match in matchs
   msgbox (mid(match,7))
   Next
End Function
str="IP: 222.27.50.*2011-02-16 17:38:04y444444trwetrwe4001"
reg(str)
作者: 小飞天猪    时间: 2011-2-18 10:38
非常感谢各位的大力帮助!!!
每个人的都写的很好,我试了几个,都很好,非常感谢啊···




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2