2009-12-16 123 views
5

是否有任何可能獲得經典的ASP多線字符串(我認爲VBScript是語言)?多行字符串在經典ASP

我想多串如同在Python或Groovy:

高清海峽=「」「你好 我是一個 多 字符串」「」

我搜索了很多,但沒有發現一個辦法。

變通辦法也歡迎。

順便說一句:我有JavaScript的同樣的問題,並解決了它與時間保存在一個變量的功能。這個函數有一個多行註釋,所以我可以通過所有的東西,除了使用正則表達式的評論。

事情是這樣的:

var multilinestr = function() { 
/* 
hello 
I am a multiline 
string 
*/ 
} 

而且正則表達式後,我得到了其中包含的字符串:

hello 
I am a multiline 
string 

謝謝。

編輯:

我想我錯過了一個很重要的一點。 我的客戶正在爲他的腳本使用類似「預處理器」的東西。 它看起來像這樣:

Dim str 
str = "<%std_text%>" 

「預處理器」交流「<%std_text%>」與來自數據庫的文本。 但這個文本有它的休息,所以我不能只是把預處理「它看起來像這樣‘」 & vbNewline’到行的末尾 這意味着後」:

Dim str 
str = "hello 
I am a multiline 
string" 

反正是有之後, 「前處理」

def multistr = """<%std_text%>""" 

:在字符串中得到這個 「文本」

如果我能寫這樣的事情(常規)?

def multistr = """hello 
I am a multiline 
string""" 

這將是偉大的!

+0

你要多行作爲發送給瀏覽器的純文本多行?或者你想渲染的文本是多行? – AnonJr 2009-12-16 14:24:06

+0

我在嘗試不同的東西。我只是編輯我的問題以獲得更好的理解。對不起,應該發佈這個,因爲我創建了我的問題。 – OemerA 2009-12-16 15:14:32

+0

預處理器可以執行任何其他邏輯,或者當從數據庫中獲取數據時,是否可以用「&vbNewline&」代替換行符「 – 2009-12-16 15:14:44

回答

2

不幸的是,就我所知,您將無法按原樣使用它。您需要修改預處理器,以用實際的vbNewLine變量代替vbNewLine,而不是真正的換行符。 VB腳本沒有辦法在不使用& _的情況下連接多行上的字符串,這需要您在每行上執行此操作之前關閉字符串,這似乎不適用於此設置。

+0

謝謝!我認爲用VB腳本創建多行字符串是不可能的。 – OemerA 2009-12-18 16:02:28

3

你不能添加回車符到字符串?

Dim myString : myString = "Line 1" & vbCrLf & "Line 2" ...等

+1

是的,很確定這是你唯一的追求。 – 2009-12-16 14:22:57

+0

只要不要忘記,經典的ASP/VBScript不會讓你設置變量在你聲明它的同一行。 – AnonJr 2009-12-16 14:34:13

+1

我的壞 - 它已經有一段時間了:) – 2009-12-16 16:01:05

0

這裏只有兩種方法,我知道的,我已經做了10年以上。

Dim x: x = "Hello" & vbNewline & "World" 

Dim x: x = "Hello" & vbNewline & _ 
     "World" 

我想有破解的方法,太:

Dim x: x = Replace("Hello\nWorld", "\n", vbNewline) 
+0

只要不要忘記,經典的ASP/VBScript不會讓你設置變量在你聲明它的同一行。 – AnonJr 2009-12-16 14:32:54

+0

哈,哈,哈,應該已經測試過了,現在已經比VBS做了更多的VB.Net了!謝謝@AnonJr! – 2009-12-16 15:09:16

+0

沒問題。我最近在這裏遇到了一個VBScript問題,所以我在我的腦海中找到了所有有趣的小怪癖。 – AnonJr 2009-12-16 15:28:42

2

你要多行作爲發送給瀏覽器的純文本多行?或者你想渲染的文本是多行?

如果它的前者,a solution like Mick's有效。您可以使用vbCrLfvbNewLine在發送到瀏覽器的文本中創建一個新行。 IIRC後者是首選,因爲它提供適合客戶的回車或回車/換行。

Dim myString : myString = "hello" & vbNewLine & "I am a multi-line" & vbNewLine & "string"

如果是後者,你只需要把你想要瀏覽器中創建一個新的線<br />。在這種情況下,您可能需要考慮爲什麼要顯示您希望顯示的方式,因爲可能(或可能不)是更好的方式。

+0

@AnonJr: 休息時間來自數據庫中的文本。希望這會回答你的問題。 – OemerA 2009-12-18 11:43:13

6

蟒蛇:

text = """" 
hello world 
this is some text 
""" 

的VBScript:

text = "" & vbcrlf &_ 
"hello world" & vbcrlf &_ 
"this is some text" & vbcrlf 

您也可以編寫自定義StringBuffer類等

with new StringBuffer 
    .writeline "hello world" 
    .writeline "this is some text" 
    result = .as_string 
end with 

只是吻......我的意思是一個 '預處理'對於腳本語言?這聽起來不太好....

如果您確實需要使用預處理器(i18n?),則需要對其進行修改,以便將所有換行符替換爲「& vbcrlf &」。

0

我能得到的最接近的是:

Dim multilineStr : multilineStr = Join(Array(_ 
    "Begin"  , _ 
    " my"  , _ 
    " multiline", _ 
    " string!" , _ 
    "End"   _ 
), vbNewLine) 

Dim multilineStr : multilineStr = Join(Array(_ 
    "Begin"  , _ 
    " my"  , _ 
    " multiline", _ 
    " string!" , _ 
    "End"   _ 
), "<br/>")