51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9718|回复: 14
打印 上一主题 下一主题

[原创] VB中有没有什么函数可以取到一串字符串中间的某几个字?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-19 09:36:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如说字符串是“中华人民共和国”

我想取得“人民”两字,而这两个字是不断在变的,“中华”和“共和国”是不变的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-8-19 09:51:23 | 只看该作者
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
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-8-19 10:04:28 | 只看该作者
学习了!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-8-19 10:55:22 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-8-19 10:59:33 | 只看该作者
非常感谢版主,我知道了~~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-8-19 11:34:40 | 只看该作者
原帖由 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("红警-共和国之辉是中华人民共和国的游戏达人修改的","中华","共和国")
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-8-19 12:33:31 | 只看该作者
从字符串中返回指定数目的字符。
语法
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"。

我查的...帮助文件..呵
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-8-19 13:55:58 | 只看该作者
原帖由 hsjzfling 于 2008-8-19 11:34 发表


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

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

确实,呵呵,需要修改下
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-8-19 14:11:25 | 只看该作者
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
这个函数解决你你那个问题,但是当“中华”前还有“中华”时,会从第一个串开始计算
要解决也可以,只是不想搞的那么麻烦了,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-8-19 17:18:01 | 只看该作者
典型的使用正则表达式的例子
例如,经常遇到的获取<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出来了
具体怎么处理,要看你自己的了
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-8-19 17:25:11 | 只看该作者
居然说我的回复需要审核
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-8-19 20:12:50 | 只看该作者

同意同意

Mid函数very good!!!
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2008-8-22 09:42:14 | 只看该作者
两天没上来,看到这么多高手在讨论这个问题,学习了:)
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-8-25 09:33:23 | 只看该作者
学习了~~
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-8-25 09:53:11 | 只看该作者
yes,Mid()
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-23 09:39 , Processed in 0.082487 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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