问题说简单,其实也很简单,就是一个小小的引号的问题我在读取到网页的文本内容后,就有了类似的字符串:
<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遇到要替换的字符串有引号”的问题。谢谢!
<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。先将字符串中的"转变成""
2.在处理下面的工作。
应该是你读取字符串有问题
你的strA怎么得来的?
Dim a As String
a = "this string include some '""' "
Debug.Print a
'replace it
a = Replace(a, """", "*")
Debug.Print a
End Sub
flyingscv(zlj) :我的STRA就是网页的内容啊
例:
Private Sub Form_Load()
Dim str As String
str = "aaaa""""bbbb" 'STR的内容为 aaaa""bbbb
str = Replace(str, """", "")
'STR的内容为 aaaabbbb
End Sub
楼主可以先去掉"
“<”和“>”框住的内容
你是怎么取的得?
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不固定的
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
lngPosB = InStr(1, strString, ">")
strTemp = Mid$(strString, lngPosA, lngPosB - lngPosA + 1)
再给一个例
Private Sub Form_Load()
Dim str As String
str = "<aaaa"""">bbbb" 'str 为 "<aaaa"">bbbb
str = Replace(str, "<aaaa"""">", "")
'str 为 bbbb
End Sub
楼主可以用DEBUG看一下STR的值
你的例子我明白,我就是这么做的,做不出来!:(你把你的str分解成2个str然后再做做:str 为 "<aaaa"">bbbb
stra 为 aaa"">b
replace (str,stra,"")
有什么答案?:)
没错!字符串另存为文本文件你会吧
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"">
Private Sub Form_Load()
Dim str As String
Dim strb As String
strb = "<aaaa"""">"
str = "<aaaa"""">bbbb"
str = Replace(str, strb, "")
End Sub
hhjjhjhj(大头) :我已经说了 谢谢! :)
我要分.
" 是转意字符 这句很重要.
"""" 就是一个双引号 第一个和第四个是一对,第二个是转意字符 第三个是特殊字符
楼主学过C吧 转意字符想必明白.
给你一段代码参考
你自己看吧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
用付值语句做这些都没有问题,你需要用程序自己分开<...>然后再看看结果
你这样做是没有问题的,我试了,问题是到我的程序那里就不对了:
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"">
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
但是我的问题没有解决,也许问题不出在引号上面,正在查再次谢谢你对我的帮助! :)
处理前
<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--中国最大的开发者网络,为开发人员和相关企业提供全面的信息服务和技术服务
Private Sub Command1_Click()
Dim s$
s = "111" & """" & "abc" & """" & "222"
s = Replace(s, "111", "aaa")
MsgBox s
End Sub
谢谢!:)我看到我的一个问题了: strTemp = Replace(strTemp, Chr(34), """""""")上面好象多此一举,但是程序还是走不下去
你这样试一下
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
第一个问题是我自己搞错了!!再次谢谢!对于第二个问题有没有什么好的想法? :)等我程序排错完成后就给分!现在还是在REPLACE 的地方有问题 :(
DoEvents
intTemp1 = InStr(1, stra, "<")
inttemp2 = InStr(1, stra, ">")
stra = Replace(stra, Mid(stra, intTemp1, inttemp2 - intTemp1 + 1), "")
Loop
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