问题说简单,其实也很简单,就是一个小小的引号的问题我在读取到网页的文本内容后,就有了类似的字符串:
<html>
<head>
<title>CSDN.NET--中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务</title>
<meta name="Keywords" CONTENT="软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel=stylesheet href="/csdn_index.css" type="text/css">
</head>
......我觉得处于“<”和“>”之间的内容没有用,想删掉这些内容。
开始就想到了replace,先找到“<”和“>”框住的内容,比如:<html>
然后就用:
strA=replace(strA,“<”和“>”框住的内容,"")
把框住的内容去掉,后来发现当字符串为:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
就出错了!
我的问题是:1、当replace遇到要替换的字符串有引号时,该怎么办
2、有没有更好的办法把HTML文本变成没有标识的文本(当然另存为TXT文件也是一个好办法)对于问题1,我自己现在是用:Split(strA, "<")然后去掉每个STR的">"符号左边的字符,再合并成一个STR。还有就是用RIGHT和LEFT也可以做出来:(
但是,我还是觉得用replace方便,也想知道怎么样处理“replace遇到要替换的字符串有引号”的问题。谢谢!

解决方案 »

  1.   

    我以前用过一个方案,是消除字符串中的"'"(在SQL中),你可以试试。
    1。先将字符串中的"转变成""
    2.在处理下面的工作。
      

  2.   

    replace对"号一样处理
    应该是你读取字符串有问题
    你的strA怎么得来的?
      

  3.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim a As String
        a = "this string include some '""' "
        Debug.Print a
        'replace it
        a = Replace(a, """", "*")
        Debug.Print a
    End Sub
      

  4.   

    1ssp() :你说的方法,我试了,不行
    flyingscv(zlj) :我的STRA就是网页的内容啊
      

  5.   

    VB的转意字符是"
    例:
    Private Sub Form_Load()
        Dim str As String
        str = "aaaa""""bbbb"  'STR的内容为 aaaa""bbbb
        str = Replace(str, """", "")
        'STR的内容为 aaaabbbb
    End Sub
    楼主可以先去掉"
      

  6.   

    哦是我说错了
    “<”和“>”框住的内容
    你是怎么取的得?
      

  7.   

    其实简单:
    STRA的字符为:
    <html>
    <head>
    <title>CSDN.NET--中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务</title>
    <meta name="Keywords" CONTENT="软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel=stylesheet href="/csdn_index.css" type="text/css">
    </head>用Replace把里面的<.....>的内容去掉比如说,replace(stra,strb,"")
    strb为:<meta name="Keywords" CONTENT="软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL">记住:strb不固定的
      

  8.   

    '引用Microsoft Internet Controls
    Private Sub Command1_Click()
    Dim myIE As InternetExplorer
    Set myIE = New InternetExplorer
    myIE.Navigate "http://office.9zp.com/index.asp"
    'myIE.Visible = True
    MsgBox "等一下,具体实施时可用DownloadComplete事件"
    MsgBox myIE.Document.body.innertext
    End Sub
      

  9.   

    flyingscv(zlj) :    lngPosA = InStr(1, strString, "<")
        lngPosB = InStr(1, strString, ">")
        strTemp = Mid$(strString, lngPosA, lngPosB - lngPosA + 1)
      

  10.   

    楼住看来是没理解
    再给一个例
    Private Sub Form_Load()
        Dim str As String
        str = "<aaaa"""">bbbb"  'str 为 "<aaaa"">bbbb
        str = Replace(str, "<aaaa"""">", "")
        'str 为 bbbb
    End Sub
    楼主可以用DEBUG看一下STR的值
      

  11.   

    hhjjhjhj(大头) :呵呵,你这就是另存为文本啊
      

  12.   

    jhzhou882(狂刀客) :谢谢!
    你的例子我明白,我就是这么做的,做不出来!:(你把你的str分解成2个str然后再做做:str 为 "<aaaa"">bbbb
    stra 为 aaa"">b
    replace (str,stra,"") 
    有什么答案?:)
      

  13.   

    ////hhjjhjhj(大头) :呵呵,你这就是另存为文本啊///////
    没错!字符串另存为文本文件你会吧
      

  14.   

    While InStr(1, strString, "<") <> 0
        lngPosA = InStr(1, strString, "<")
        lngPosB = InStr(1, strString, ">")
        strTemp = Mid$(strString, lngPosA, lngPosB - lngPosA + 1)
        strTemp = Replace(strTemp, Chr(34), """""""")
        strString = Replace(strString, strTemp, "")
    Wend
    程序在
    strTemp为以下的地方行成死循环
    <meta name="Keywords" CONTENT="软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL">
    strTemp的值为:
    "<meta name=""Keywords"" CONTENT=""软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL"">
      

  15.   

    楼主应该这样
    Private Sub Form_Load()
        Dim str As String
        Dim strb As String
        strb = "<aaaa"""">"
        str = "<aaaa"""">bbbb"
        str = Replace(str, strb, "")
    End Sub
      

  16.   

    "2、有没有更好的办法把HTML文本变成没有标识的文本(当然另存为TXT文件也是一个好办法)"
    hhjjhjhj(大头) :我已经说了 谢谢!  :)
      

  17.   

    楼主现在OK了吗?
    我要分.
    " 是转意字符   这句很重要.
    """" 就是一个双引号  第一个和第四个是一对,第二个是转意字符 第三个是特殊字符
    楼主学过C吧 转意字符想必明白.
      

  18.   

    一定是取错了
    给你一段代码参考
    你自己看吧Private Sub Command1_Click()
       Dim S As String
       Dim lngPosA As Long
       Dim lngPosB As Long
       Dim strTemp As String
       
       S = "aa<"">bb"
       Debug.Print S
       
       lngPosA = InStr(1, S, "<")
       lngPosB = InStr(1, S, ">")
       strTemp = Mid$(S, lngPosA, lngPosB - lngPosA + 1)
       S = Replace(S, strTemp, "")
       
       Debug.Print S
    End Sub
      

  19.   

    jhzhou882(狂刀客) :谢谢!
    用付值语句做这些都没有问题,你需要用程序自己分开<...>然后再看看结果
      

  20.   

    flyingscv(zlj) :
    你这样做是没有问题的,我试了,问题是到我的程序那里就不对了:
    While InStr(1, strString, "<") <> 0
        lngPosA = InStr(1, strString, "<")
        lngPosB = InStr(1, strString, ">")
        strTemp = Mid$(strString, lngPosA, lngPosB - lngPosA + 1)
        strTemp = Replace(strTemp, Chr(34), """""""")
        strString = Replace(strString, strTemp, "")
    Wend
    程序在
    strTemp为以下的地方行成死循环
    <meta name="Keywords" CONTENT="软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL">
    strTemp的值为:
    "<meta name=""Keywords"" CONTENT=""软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL"">
      

  21.   

    我想下面的代码应该能够解决搂主的问题了吧Private Sub Command1_Click()
    Dim stra As String
    Dim intTemp1 As Integer
    Dim inttemp2 As Integer
    Debug.Print "处理前"
    Debug.Print " "
    stra = "<html>" & Chr(10) & _
    "<head>" & Chr(10) & _
    "<title>CSDN.NET--中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务</title>" & Chr(10) & _
    "<meta name=""Keywords"" CONTENT=""软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL"">" & Chr(10) & _
    "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & Chr(10) & _
    "<link rel=stylesheet href=""/csdn_index.css"" type=""text/css"" > " & Chr(10) & _
    "</head>"Debug.Print stra
    Do While InStr(1, stra, "<") <> 0
        DoEvents
        intTemp1 = InStr(1, stra, "<")
        inttemp2 = InStr(1, stra, ">")
        stra = Replace(stra, Mid(stra, intTemp1, inttemp2 - intTemp1 + 1), "")
    Loop
    Debug.Print " "
    Debug.Print "处理后"
    Debug.Print stra
    End Sub
      

  22.   

    jhzhou882(狂刀客) :确实谢谢你,分我一定会给你的!
    但是我的问题没有解决,也许问题不出在引号上面,正在查再次谢谢你对我的帮助!  :)
      

  23.   

    运行上面的代码结果显示如下
    处理前
     
    <html>
    <head>
    <title>CSDN.NET--中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务</title>
    <meta name="Keywords" CONTENT="软件,共享,行业,技术,开发,论坛,新闻,专家门诊,程序员大本营,VC,VB,Delphi,ASP,PHP,Perl,SQL">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel=stylesheet href="/csdn_index.css" type="text/css" > 
    </head>
     
    处理后
    CSDN.NET--中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务
      

  24.   

    是这个意思吗?参考
    Private Sub Command1_Click()
    Dim s$
    s = "111" & """" & "abc" & """" & "222"
    s = Replace(s, "111", "aaa")
    MsgBox s
    End Sub
      

  25.   

    chewinggum(口香糖·向星星前进) :
    谢谢!:)我看到我的一个问题了:    strTemp = Replace(strTemp, Chr(34), """""""")上面好象多此一举,但是程序还是走不下去
      

  26.   

    楼主呀小弟要下班了
    你这样试一下
    While InStr(1, strString, "<") <> 0
        lngPosA = InStr(1, strString, "<")
        lngPosB = InStr(1, strString, ">")
        strTemp = Mid$(strString, lngPosA, lngPosB - lngPosA + 1)
        strTemp = Replace(strTemp, """", """""")
        strString = Replace(strString, strTemp, "")
    Wend
      

  27.   

    谢谢大家!
    第一个问题是我自己搞错了!!再次谢谢!对于第二个问题有没有什么好的想法?  :)等我程序排错完成后就给分!现在还是在REPLACE 的地方有问题 :(
      

  28.   

    我的那段代码还没有解决你的问题吗?为什么你就那么执著的用replace呢?我就没有明白过来,我那段代码不是把你两个问题都解决了吗?运行不会出错,最终得到的是去除所有标记的结果,留下的难道不是你想要的字符串?代码也不会复杂吧,前面一大半是赋值语句,关键的是下面这一段Do While InStr(1, stra, "<") <> 0
        DoEvents
        intTemp1 = InStr(1, stra, "<")
        inttemp2 = InStr(1, stra, ">")
        stra = Replace(stra, Mid(stra, intTemp1, inttemp2 - intTemp1 + 1), "")
    Loop
      

  29.   

    问题解决了 :)是在代码里面有:  <.....<......>....>程序判断错误等会给分!谢谢上面的朋友!!
      

  30.   

    chewinggum(口香糖·向星星前进) :谢谢你的帮忙!你的代码和我的代码没有区别啊  ;)这是我的代码啊:
    While InStr(1, strString, "<") <> 0
        lngPosA = InStr(1, strString, "<")
        lngPosB = InStr(1, strString, ">")
        strTemp = Mid$(strString, lngPosA, lngPosB - lngPosA + 1)
        strTemp = Replace(strTemp, Chr(34), """""""")这句错了,删了就可以了
        strString = Replace(strString, strTemp, "")
    Wend