小飞天猪 发表于 2011-2-16 13:59:45

在一个字符串中如何截取到另一个字符串?

字符串为“IP: 222.27.50.*2011-02-16 17:38:04test001”
该字符串中的IP地址和日期都是随机的,我现在想截取到日期后的字符串test001,该如何实现呢?

shingo0109 发表于 2011-2-16 14:52:12

如果test001在这个字符串最右边的话, 而且长度固定为7位的话, 可以用Right函数来实现。
不知LZ所取的"test001"是不是固定长度的?

小飞天猪 发表于 2011-2-16 15:21:52

回复 2# shingo0109


    非常感谢你的回答··
   test001不是个固定的长度··我难就难在这儿,不知道如何截取,不知道您还有什么高见···期待您的回答

gezhirong 发表于 2011-2-16 16:21:43

用正则表达式:++

小飞天猪 发表于 2011-2-16 16:23:33

回复 4# gezhirong


    谢谢您的回答,能再具体一些吗?我想到了正则,但是我不太会用···

gezhirong 发表于 2011-2-16 16:32:59

Function reg(str1)
   Set regex=new RegExp
   regex.pattern="++"
   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:47

ls的回答是要保证lz要取的那个"test001"一定是以n个小写字母开头,后面跟着m个数字的字符串,具体的正则表达式需要lz分析目标字符串的变化范围才能确定下来

BesTesTer 发表于 2011-2-16 18:59:38

字符串中的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:39

同楼上方法差不多, 也是根据“:”来用正则表达式, 代码如下:
strng="IP: 222.27.50.*2011-02-16 17:38:04test001"
patrn=":"+""
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:42

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:54

Function reg(str1)
   Set regex=new RegExp
   regex.pattern=":.*"
   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:33

非常感谢各位的大力帮助!!!
每个人的都写的很好,我试了几个,都很好,非常感谢啊···
页: [1]
查看完整版本: 在一个字符串中如何截取到另一个字符串?