51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3498|回复: 11
打印 上一主题 下一主题

[原创] 在一个字符串中如何截取到另一个字符串?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-2-16 13:59:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
字符串为“IP: 222.27.50.*2011-02-16 17:38:04test001”
该字符串中的IP地址和日期都是随机的,我现在想截取到日期后的字符串test001,该如何实现呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2011-2-18 10:38:33 | 只看该作者
非常感谢各位的大力帮助!!!
每个人的都写的很好,我试了几个,都很好,非常感谢啊···
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2011-2-17 11:37:54 | 只看该作者
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)
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    9#
    发表于 2011-2-17 10:19:39 | 只看该作者
    同楼上方法差不多, 也是根据“:”来用正则表达式, 代码如下:
    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 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)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-2-16 17:50:47 | 只看该作者
    ls的回答是要保证lz要取的那个"test001"一定是以n个小写字母开头,后面跟着m个数字的字符串,具体的正则表达式需要lz分析目标字符串的变化范围才能确定下来
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2011-2-16 16:32:59 | 只看该作者
    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)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2011-2-16 16:23:33 | 只看该作者
    回复 4# gezhirong


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

    使用道具 举报

    该用户从未签到

    4#
    发表于 2011-2-16 16:21:43 | 只看该作者
    用正则表达式:[a-z]+[0-9]+
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2011-2-16 15:21:52 | 只看该作者
    回复 2# shingo0109


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

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-10 17:57
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]测试团长

    2#
    发表于 2011-2-16 14:52:12 | 只看该作者
    如果test001在这个字符串最右边的话, 而且长度固定为7位的话, 可以用Right函数来实现。
    不知LZ所取的"test001"是不是固定长度的?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 16:06 , Processed in 0.107450 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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