VBScript 文本格式问题
VBScript text Formatting issues
我的数据中包含 <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
所有硬信息 (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,您将不会 'see' Replace 为您完成的艰苦工作。
如果你坚持要进行两次(或更多次)替换,则必须将之前的结果提供给当前操作。这就是为什么你的
body = Replace(objRecN("News"),"<BR>", vbCrLf)
body = Replace(objRecN("News"),"<br>", vbCrLf)
'work'分开但不在一起。相比之下,两者
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 />
,您将需要一个正则表达式。
谢谢大家的帮助。
body = Replace(body,"<BR>", "<br>")
虽然我从你的帖子中学到了很多东西。这是实际解决我的问题的代码。如果我没有更好地传达它,我很抱歉。
我的数据中包含 <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
所有硬信息 (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,您将不会 'see' Replace 为您完成的艰苦工作。
如果你坚持要进行两次(或更多次)替换,则必须将之前的结果提供给当前操作。这就是为什么你的
body = Replace(objRecN("News"),"<BR>", vbCrLf)
body = Replace(objRecN("News"),"<br>", vbCrLf)
'work'分开但不在一起。相比之下,两者
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 />
,您将需要一个正则表达式。
谢谢大家的帮助。
body = Replace(body,"<BR>", "<br>")
虽然我从你的帖子中学到了很多东西。这是实际解决我的问题的代码。如果我没有更好地传达它,我很抱歉。