51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 用VBS如何从记事本中读取特定字符

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-6-10 20:54:35 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
QTP时, 我想从记事本中读取特定位置的字符
            请问用vbs怎么处理

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

15#
发表于 2008-6-15 20:02:14 | 只看该作者
学习,不错啊
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-6-29 10:24
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2008-6-14 16:11:22 | 只看该作者
    原帖由 xiaonan 于 2008-6-11 09:38 发表
    用instr 函数一行行去匹配,匹配到后,得到字符所在行的位置,然后再把所要的值再输出嘛



    突然想到一个问题,如果匹配字符串刚好出现在一行的结尾和下行的开始,如果是逐行去匹配的话会不会有一些遗漏?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2008-6-13 19:17:13 | 只看该作者
    感谢大家的帮忙,问题已解决,实际上我读取的是xml文件中的字符串
    附上 我写的代码和xml文件(.rar)     希望大家能多多指教


    Const forreading=1,forwriting=2,forappending=8
    Const trisateusedefault=-2,tristatetrue=-1,tristatefalse=0
    Dim fso,f,ts,tr
    Set fso=createobject("scripting.filesystemobject")
    Set f=fso.opentextfile("e:\channel_info.txt",forwriting,true)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''         
    Set doc = XMLUtil.CreateXML()
    doc.LoadFile "C:\Program Files\BitMov XM\ChannelList\Channel.xml"
    Set root = doc.GetRootElement()
    Set QQp= root.ChildElements()
    Set QQp1 =QQp.Item(1)
    Set dianbo=QQp1.ChildElements()
    Set dianbo1 =dianbo.Item(1)
    Set dianbo2=dianbo1.ChildElements()
    For  k=1 to dianbo2.count()
         Set  movies=dianbo2.item(k)'设置为电影栏或电视剧栏                                                                                                               
         Set child_movies=movies.childelements()  
         count_movies=child_movies.count()             '求有多少节目类别
         Set attribs_total=movies.attributes()
         Set attr_total=attribs_total.item(1)     
          namestr_total=attr_total.name()
          valstr_total=attr_total.value()  
         For    i=1 to count_movies           '外层循环节目的类别数
                  Set ch_movies=child_movies.item(i)
                  Set ch1_movies=ch_movies.childelements()  
                      Set attribs=ch_movies.attributes()

                  Set attr=attribs.item(1)     
                  namestr=attr.name()
                  valstr=attr.value()      '求出每个节目类别的名字
                  count1_movies=ch1_movies.count()   '求出电影栏下每个类别有多少节目
                   For  j=1 to count1_movies         '内层循环每个类别下的节目
                                Set ch1_movies=ch_movies.childelements()  ''''以下是求出某个类别下的第“”“j”“”个影片的名字
                            Set ch11_movies=ch1_movies.item(j)                                                           
                            Set attribs_cell=ch11_movies.attributes()

                           Set attr_cell=attribs_cell.item(2)     
                           namestr_cell=attr_cell.name()
                           valstr_cell=attr_cell.value()
                           'msgbox valstr_cell
                                   nam=valstr_total&"("&count_movies&")"&";"&valstr&"("&count1_movies&")"&";"&valstr_cell
                                  'wait (1)
                          f.writeline nam  '向文件里写入节目名字
                   
                 Next
        Next
    Next
    f.close

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2008-6-13 19:12:36 | 只看该作者
    问题已解决
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2008-6-12 23:26:29 | 只看该作者

    回复 10# 的帖子

    LS的方法很不错,思路也很好,但是函数如果要通用的话,却还是存在比较大的缺陷的~先看下LS的函数吧~
    1. Function getStrBetween(Str,StartStr,EndStr)  
    2. StartStrPos = Instr(Str, StartStr)+Len(StartStr)   
    3. EndStrPos = Instr(Str,EndStr)   
    4. Length = EndStrPos  - StartStrPos   
    5. Res= Mid(Str,StartStrPos,Length)   
    6. getStrBetween = Res
    7. End Function

    8. Str = "如何获取两个字符串之间的字符串?"
    9. StartStr ="获取"
    10. EndStr = "字符串"
    11. Res = getStrBetween(Str,StartStr,EndStr)
    12. Msgbox Res
    复制代码
    如果这个时候我目标字符串稍微改变下,让EndStr存在于StartStr之前,比如将Str改为
    Str = "字符串操作之如何获取两个字符串之间的字符串"
    其它部分不变,那么就会直接报错了~~

    解决方案也很简单,只需要把
    EndStrPos = Instr(Str,EndStr)  
    改为
    EndStrPos = Instr(StartStr,Str,EndStr)   
    即可
    当然,如果再全面一些,我们最好再考虑下StartStr或EndStr在目标Str中不存在的情况,尤其是EndStr,不存在的时候还是要给出相应的返回值的~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2008-6-12 17:50:11 | 只看该作者
    可以用InStr和Mid函数,参见:
    http://blog.csdn.net/Testing_is_ ... /06/12/2540629.aspx

    [ 本帖最后由 陈能技 于 2008-6-12 21:02 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2008-6-12 16:37:10 | 只看该作者
    实际上比较复杂 ,能不能用正则表达式做啊
       我不是很懂的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2008-6-12 14:45:59 | 只看该作者
    1.在写入代码中加入分隔符

    2.用Split函数取到值

    3.最后用StrComp函数进行对比

    不知道是否有帮助解决这个问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2008-6-12 10:56:31 | 只看该作者
    感谢回帖,可能我没说清楚
        我说的具体点:
         “唐家山堰塞湖” 这句 我只知道有“唐家山”与“湖”,而它们之间的字符我不知道,也不知道有几个字符;
       如何提取“唐家山”与“湖”之间的字符串呢(重声明:“堰塞”这个字符串我事先不知道)
         “唐家山********湖”            提取*******
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2008-6-11 11:07:45 | 只看该作者
    原帖由 xiaonan 于 2008-6-11 09:38 发表
    用instr 函数一行行去匹配,匹配到后,得到字符所在行的位置,然后再把所要的值再输出嘛


    嗯,办法真的很好,学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2008-6-11 09:38:03 | 只看该作者
    用instr 函数一行行去匹配,匹配到后,得到字符所在行的位置,然后再把所要的值再输出嘛

    [ 本帖最后由 xiaonan 于 2008-6-11 09:39 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2008-6-11 09:03:02 | 只看该作者
    分别找到"唐家山"和"湖"的位置,然后截取就可以了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2008-6-10 23:03:36 | 只看该作者
    麻烦能不能具体点,我算的上是新手
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2008-6-10 21:00:56 | 只看该作者
    1.读取每行数据
    2.进行数据匹配
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-28 18:23 , Processed in 0.089308 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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