2009-12-16 32 views
5

c'è qualche possibilità di ottenere una stringa multilinea in asp classico (penso che vbscript sia la lingua)?String Multiline In Classic Asp

Voglio una stringa multilinea come in Python o Groovy:

def str = "" "Ciao Sono un multilinea stringa" ""

ho cercato un sacco, ma non ha trovato una soluzione.

Anche i workaround sono ben accetti.

BTW: Ho avuto in javascript lo stesso problema e l'ho risolto indietro nel tempo con una funzione salvata in una variabile. Questa funzione aveva un commento multilinea in modo che potessi passare tutto via tranne il commento usando regex.

Qualcosa di simile a questo:

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

E dopo Regex ho avuto una stringa che contiene:

hello 
I am a multiline 
string 

Grazie.

Edit:

penso ho perso un punto molto importante. Il mio cliente usa qualcosa come un "pre-processore" per i suoi script. Ecco come si presenta:

Dim str 
str = "<%std_text%>" 

"pre processore" scambi "<% std_text%>" con un testo che proviene da un database. Ma questo testo sono pause in esso quindi non posso solo mettere un trattamento pre 'sembra che questo '" & vbNewLine' fino alla fine della linea di Ciò significa che dopo.':

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

c'è comunque per ottenere questo "testo" in una stringa

Se ho potuto scrivere qualcosa di simile (Groovy):? ​​

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

dopo "l'elaborazione pre":

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

Sarebbe fantastico!

+0

Vuoi multi-linea, come nel testo in chiaro inviato al browser è multi-line? O vuoi che il testo renderizzato sia multi-linea? – AnonJr

+0

Sto provando qualcosa di diverso. Ho appena modificato la mia domanda per una migliore comprensione. Spiacente dovrebbe aver postato questo come ho creato la mia domanda. – OemerA

+0

Il pre-processore può fare qualsiasi logica aggiuntiva o afferrare i dati dal database può sostituire il database con "& vbNewline &" –

risposta

2

Sfortunatamente non sarai in grado di usarlo così com'è per quanto posso dire. Dovresti modificare il pre-processore per sostituire lo vbNewLine con una variabile effettiva vbNewLine piuttosto che con interruzioni di riga reali. Non c'è modo in VB Script di concatenare una stringa su più righe senza usare & _ che richiede di chiudere la stringa prima di farlo su ogni riga, cosa che non sembra possibile con questa configurazione.

+0

Grazie! Penso che sia davvero impossibile creare una stringa multilinea con VB Script. – OemerA

3

Non è possibile aggiungere ritorni a capo alla stringa?

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

+1

Sì, sono sicuro che questa è la tua unica risorsa. –

+0

Non dimenticare che Classic ASP/VBScript non ti consente di impostare la variabile nella stessa riga in cui la dichiari. – AnonJr

+1

Il mio male - è stato un po 'di tempo :) –

0

Ci sono solo due modi di che so e ho fatto questo per 10 anni.

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

o

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

Credo che ci sia il modo in cui hack, troppo:

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

Basta non dimenticare che Classic ASP/VBScript non ti consente di impostare la variabile nella stessa riga in cui la dichiari. – AnonJr

+0

Ha, ha, ha, dovrebbe averlo testato, sta facendo più VB.Net di VBS per così tanto tempo! Grazie @AnonJr! –

+0

Non è un problema. Sono stato impantanato in un problema VBScript qui ultimamente, quindi ho tutte le buffe manie in testa alla mia mente. – AnonJr

2

Vuoi multi-linea, come nel testo in chiaro inviato al browser è multi-linea ? O vuoi che il testo renderizzato sia multi-linea?

Se è il primo, a solution like Mick's funziona. È possibile utilizzare vbCrLf o vbNewLine per creare una nuova riga nel testo inviato al browser. IIRC è preferibile in quanto fornisce il ritorno a capo o il ritorno a capo/avanzamento riga come appropriato per il cliente.

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

Se la sua quest'ultimo, basta mettere un <br /> in cui si desidera che il browser per creare una nuova riga. In questo caso, potresti voler pensare al motivo per cui vuoi che venga visualizzato nel modo in cui vuoi che venga visualizzato, poiché potrebbe esserci (o meno) un modo migliore per farlo.

+0

@AnonJr: le interruzioni sono nel testo proveniente dal database. Spero che questo risponda alla tua domanda. – OemerA

6

pitone:

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

VBScript:

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

È possibile anche scrivere una classe StringBuffer personalizzato ecc

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

Proprio bacio ... intendo un 'preprocessore' per un linguaggio di scripting? Che non suona bene ....

Se davvero bisogno di usare il preprocessore (i18n?) Di quello che sarà necessario modificarlo tale da sostituire tutte le interruzioni di linea di "& vbCrLf &".

0

Il più vicino ho potuto ottenere era:

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

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