51Testing软件测试论坛

标题: VB中有没有什么函数可以取到一串字符串中间的某几个字? [打印本页]

作者: szlcboy    时间: 2008-8-19 09:36
标题: VB中有没有什么函数可以取到一串字符串中间的某几个字?
比如说字符串是“中华人民共和国”

我想取得“人民”两字,而这两个字是不断在变的,“中华”和“共和国”是不变的。
作者: zte_boy    时间: 2008-8-19 09:51
Function getStrBetween(Str,StartStr,EndStr)  

    StartStrPos = Instr(Str, StartStr)+Len(StartStr)   

    EndStrPos = Instr(Str,EndStr)   

    Length = EndStrPos  - StartStrPos   

    Res= Mid(Str,StartStrPos,Length)   

    getStrBetween = Res

End Function
作者: sally_0817    时间: 2008-8-19 10:04
学习了!
作者: hero001    时间: 2008-8-19 10:55
学习了
作者: szlcboy    时间: 2008-8-19 10:59
非常感谢版主,我知道了~~
作者: hsjzfling    时间: 2008-8-19 11:34
原帖由 zte_boy 于 2008-8-19 09:51 发表
Function getStrBetween(Str,StartStr,EndStr)  

    StartStrPos = Instr(Str, StartStr)+Len(StartStr)   

    EndStrPos = Instr(Str,EndStr)   

    Length = EndStrPos  - StartStrPos   

    Res ...


以前我就说过这个函数有bug的,并改过其中一句,但貌似没人注意嘛。。。

版主来执行下这句看看
getStrBetween("红警-共和国之辉是中华人民共和国的游戏达人修改的","中华","共和国")
作者: lanshier    时间: 2008-8-19 12:33
从字符串中返回指定数目的字符。
语法
Mid(string, start[, length])
Mid 函数的语法有以下参数:

参数 描述
string 字符串表达式,从中返回字符。如果 string 包含 Null,则返回 Null。
start string 中被提取的字符部分的开始位置。如果 start 超过了 string 中字符的数目,Mid 将返回零长度字符串 ("")。
length 要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到字符串结束的所有字符。



说明
要判断 string 中字符的数目,可使用 Len 函数。
下面的示例利用 Mid 函数返回字符串中从第四个字符开始的六个字符:

Dim MyVar
MyVar = Mid("VB脚本is fun!", 4, 6) 'MyVar 包含 "Script"。

我查的...帮助文件..呵
作者: zte_boy    时间: 2008-8-19 13:55
原帖由 hsjzfling 于 2008-8-19 11:34 发表


以前我就说过这个函数有bug的,并改过其中一句,但貌似没人注意嘛。。。

版主来执行下这句看看
getStrBetween("红警-共和国之辉是中华人民共和国的游戏达人修改的","中华","共和国")

确实,呵呵,需要修改下
作者: zte_boy    时间: 2008-8-19 14:11
Function getStrBetween(Str,StartStr,EndStr)  

    StartStrPos = Instr(Str, StartStr)+Len(StartStr)   

    EndStrPos = Instr(StartStrPos,Str,EndStr)
   
    Length = EndStrPos  - StartStrPos

    Res= Mid(Str,StartStrPos,Length)   

    getStrBetween = Res

End Function
这个函数解决你你那个问题,但是当“中华”前还有“中华”时,会从第一个串开始计算
要解决也可以,只是不想搞的那么麻烦了,呵呵
作者: 没有蛀牙    时间: 2008-8-19 17:18
典型的使用正则表达式的例子
例如,经常遇到的获取<font></font>中间的字符串
首先要写一个不支持嵌套的正则表达式
在这里是:"中华([^中华|共和国]*)共和国"
Function getStrBetween(patrn, strng)  
        Dim regEx, Matches  
        Set regEx = New RegExp  
        regEx.Pattern = patrn  
        regEx.IgnoreCase = True '为真则忽略大小写,否则严格匹配大小写  
        regEx.Global = True  '搜索应用于整个字符串
        Set Matches = regEx.Execute(strng)  
        For each Match in Matches
                MsgBox Match.SubMatches(0)
        Next
End Function
Call getStrBetween("中华([^中华|共和国]*)共和国","红警-共和国之辉是中华中华人民共和国的中华游戏共和国游戏达人修改的")
Function写得比较简单,只是把结果MsgBox出来了
具体怎么处理,要看你自己的了
作者: 没有蛀牙    时间: 2008-8-19 17:25
居然说我的回复需要审核
作者: duanying    时间: 2008-8-19 20:12
标题: 同意同意
Mid函数very good!!!
作者: szlcboy    时间: 2008-8-22 09:42
两天没上来,看到这么多高手在讨论这个问题,学习了:)
作者: yxsong66    时间: 2008-8-25 09:33
学习了~~
作者: gjay1688    时间: 2008-8-25 09:53
yes,Mid()




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