例如“test.txt”文件里的内容为:
“this is a test,you must…………mike………………money……”我想读取文件里所有以m开头的字母并保存。我现在只知道FSO 里的readline是按行读的Line Input #1, TextLine 也是按行读取的。不知道该如何写……
谢谢

解决方案 »

  1.   

    按什么读并不要紧,有可能的话最好一下全部读到一个字符串里,然后再分析,效率比你一个一个字符读快得太多了。我以前做过一个东西,开始是把生成的文本直接保存到一个text里面,后来因为text字符数的限制,就先放到一个string里了,结果原来两分钟才完成的事几秒钟就好了。
    如果读文件的话需要读盘操作,比对控件操作更慢,因此还是使用临时变量做这个中转比较好。
      

  2.   

    Private Sub Command1_Click()
       Dim strData As String
        Dim subData() As String
        Dim strM() As String
        Dim i As Integer
        Dim j As Integer
        
        Open "c:\test.txt" For Input As #1
         
         
        While Not EOF(1)
          Line Input #1, strData
          subData = Split(strData, " ")
          For i = 0 To UBound(subData)
              Debug.Print subData(i)
             If Left(Trim(subData(i)), 1) = "m" Then
                ReDim Preserve strM(j) As String
                strM(j) = subData(i)
                j = j + 1
             End If
          Next i
        
        Wend
       
       Close #1
       
       For i = 0 To j - 1
         Debug.Print strM(i)
       Next i
       End Sub
      

  3.   

    叶帆兄,十分感激你的代码,或许是没表述清楚……
    我要读的其实是一个html的源文件,我想应该把它先存到一个字符串里,然后对其进行分析。
    可是我不知道如何逐个开始检测这个字符串。
    譬如s="\<a href="http:www.csdn.net”\>"
    当我读到h字母,IF 下一个是t ,IF 下一个还是t……是P ,THEN  开始读取这个URL直到有”结束。我现在就不知道该如何一个个的一直运行下去……
    请指教,感激
      

  4.   

    你可以用instr(s,"http")搜索关键字。你的目的想得到什么?
      

  5.   

    我想利用INET控件先得到一个网页的原代码,然后提取里面所有的URL连接并存到EXCEL里面去……
      

  6.   

    一定看过网页的HTML代码吧,假如上面有许多的链接,我想得到上面的所有的有关链接的字符串,也就是一个网址,譬如http://www.sohu.com   怎么也要读文件吧!而且要分析到底那几个词是表示网址的……
    例如有一个文件是TEST.TXT 内容如下:
    <html><body><a href="http://www.csdn.net">程序员</a><br><a href="http://www.sohu.com">搜狐</a>………………</body></html>我想得到http://www.csdn.net和http://www.sohu.com这两个网址(或者还有别的网址),该怎么写程序
      

  7.   

    要看网页的源代码?使用frontpage不是更好吗?
      

  8.   

    <html><body><a href="http://www.csdn.net">程序员</a><br><a href="http://www.sohu.com">搜狐</a>………………</body></html>
    读取网址的代码:
       dim LineText as string
       dim sublineText as string
       dim netAddress as string
       dim N1 as integer
       dim N2 as integer   open app.path & "\Text.txt" for input as #1
       do until EOF(1)
          input #1, LintText
          
          N1=instr(1,LineText,"href=")
          sublinetext=right(lineText,len(linetext)-N1)
          N2=instr(1,sublinetext,">")
          netAddress = mid$(lineText,N1+5,N2)
       loop
       close #1
    '没有调试,请自己调试
      

  9.   

    Private Sub Command1_Click()
       
        Dim subData As String
        Dim strM() As String
        Dim i As Integer
        Dim j As Integer
        Dim m As Integer
        Dim n As Integer
        
        Open "c:\test.txt" For Input As #1
         
         
        While Not EOF(1)
            Line Input #1, subData
            
            n = InStr(subData, " href=" + Chr(34))
            While n < Len(subData) And n > 0   '处理一行有多个网址的情况
              m = InStr(n, subData, Chr(34) + ">")
              If m > n Then
                   ReDim Preserve strM(j) As String
                   strM(j) = Mid(subData, n + 7, m - n - 7)
                   j = j + 1
              End If
              n = InStr(m, subData, " href=" + Chr(34))
           Wend
         
        Wend
       
       Close #1
       
       For i = 0 To j - 1
         Debug.Print strM(i)
       Next i
       End Sub
      

  10.   

    test.txt
    -----------
    <html><body><a href="http://www.csdn.net">程序员</a><br><a href="http://www.sohu.com">搜狐</a>………………</body></html>
    <html><body><a href="http://wwdfdsfw.csdsfdn.nsdfet">程sdfsd序员
      

  11.   

    叶帆完全是按照楼主的要求写了,但是URL并不一定总以“href="”开始“">”结束,有时候是链接是没有引号的,或者链接后面还有其他属性,这些楼主是否要全面考虑呢?
    下面列举几种供参考:
    <a href=next.htm>
    <a href="next.htm" class="something">
    <iframe src="next.htm">
      

  12.   

    恩,qiangsheng 说的对,我会在代码里做一些判断,但现在需要的只是href=之后到下一个结束引号之间的内容………………不同的连接形式有许多,我想无非把所有的都做一个判断,分成几个情况调用……叶兄,有一个问题关于你的代码:1    While Not EOF(1)
    2       Line Input #1, subData      
    3        n = InStr(subData, " href=" + Chr(34))
    4       While n < Len(subData) And n > 0   '处理一行有多个网址的情况
    5          m = InStr(n, subData, Chr(34) + ">")
    6         If m > n Then
    7             ReDim Preserve strM(j) As String
    8              strM(j) = Mid(subData, n + 7, m - n - 7)
    9              j = j + 1
    10            End If
    11         n = InStr(m, subData, " href=" + Chr(34))
    12       Wend
    13   Wend在第3行的InStr()中如果去掉+">"直接由Chr(34)来判断结束 ,为什么编译的时候就出现错误了呢???调试定位在11行,应该没问题的呀
      

  13.   

    抱歉,笔误,是第 5 行的InStr()中如果去掉+">"直接由Chr(34)来判断结束 ,为什么编译的时候就出现错误了呢???调试定位在11行,应该没问题的呀
      

  14.   

    不知道是不是VB的bug, InStr(n, subData, Chr(34)),这样查询,好像得到位置并不对!
      

  15.   

    那问题就有了,如果不是以Char(34)结尾,有些情况就很难处理了……譬如:<link rel=stylesheet href="/csdn_index.css" type="text/css">
     <a href="/member/zc.asp" target="_blank">期待中……
      

  16.   

    找到了href="而在下一个href=" 之前没有找到"> 程序就会报错了!!
      

  17.   

    关于chr(34)的问题,我想是这样的,可以用一个强制类型转换,Cstr(chr(34)),应该就可以了,因为chr(34)是一个char型的值而非string型。另外,关于超链接的问题,有些是由于HTML本身不够规范化造成的。
    比如下面这个链接<a href=http://www.mysite.com/a link with space.htm>就无法正确解释,因为在分析器中,到href=http://www.mysite.com/a就认为结束了。必须用引号将链接引起来才可以正确访问。
      

  18.   

    Char(34)的问题我想了一个笨方法 ,用replace(String,Char(34),"引号")把所有的引号都换掉,然后再对新的字符串做instr()……,可是我在用网页的源文件调试叶帆兄的代码时出了些怎么也解决不了的问题,
    以 http://www.265.com/2650100/index.htm 这个网页的源文件为例,存放成test.txt
    运行程序,出现“适时错误"5" 提示无效的错误或参数!”
    单以程序看,无非是取不准URL,我不知道什么原因…导致错误……请各位指教……希望能尽快结帖
      

  19.   

    你可以用 chr(34)+" ",试试。