VBScript文本格式问题

时间:2015-06-23 14:23:03

标签: vbscript asp-classic

我的数据中包含<br><BR>个标签。我必须更新运行VBScript Classic ASP的旧站点。我对这两者中的任何一个都知之甚少,但我想出了一些破解逻辑来尝试快速解决问题,我不明白为什么它不起作用。

    If InStr(1,objRecN("News"),"<BR>")> 1 Then
     response.write "This is 1<BR>"
     body = Replace(objRecN("News"),"<BR>", vbCrLf)
Else
     response.write "This is 2<br>"
     body = Replace(objRecN("News"),"<br>", vbCrLf)
End If

Response.Writes正在有效地证明正在应用正确的逻辑但是替换不起作用。

 body = Replace(Replace(objRecN("News"),"<br>", vbCrLf), "<BR>", vbCrLf)

这也行不通。这是我尝试解决此问题的第一次尝试。有线索吗?

一旦应用其他逻辑,它就会中断!

  If InStr(1,objRecN("News"),"<BR>")> 1 Then
    response.write "This is 1<BR>"
     body = Replace(objRecN("News"),"<BR>", vbCrLf )
    End If

2 个答案:

答案 0 :(得分:2)

所有硬信息(c)@Alex。

VBScript的Replace function有效;它甚至可以被要求忽略大小写(标记使用预定义的vbTextCompare而不是幻数)。如果它看起来不是这样,程序员应该受到指责。证据:

>> s = "abc<br>def<BR>ghi"
>> WScript.Echo qq(s)
>> s = Replace(s, "<br>", "!!!!", 1, -1, vbTextCompare)
>> WScript.Echo qq(s)
>>
"abc<br>def<BR>ghi"
"abc!!!!def!!!!ghi"

如果用vbCrLf(或其他空格)替换然后将结果写入HTML,则不会“看到”替换为您所做的努力。

如果您坚持两次(或更多次)替换,则必须将之前的结果提供给当前操作。这就是为什么你的

body = Replace(objRecN("News"),"<BR>", vbCrLf)
body = Replace(objRecN("News"),"<br>", vbCrLf)

'分开工作'但不在一起。相比之下,两者都是

body = objRecN("News")
body = Replace(body,"<BR>", vbCrLf)
body = Replace(body,"<br>", vbCrLf)

body = Replace(Replace(objRecN("News"),"<br>", vbCrLf), "<BR>", vbCrLf)

将处理所有<BR><br>,但不会处理<Br>,这对vbTextCompare版本没有问题。

如果下一个数据包含<br/><br /><br />,则需要正则表达式。

答案 1 :(得分:0)

谢谢大家的帮助。

body = Replace(body,"<BR>", "<br>")

虽然我从你的帖子中学到了很多东西。这是实际修复我的问题的代码。如果我没有更好地传达它,我很抱歉。