2009-12-16 48 views
5

¿hay alguna posibilidad de obtener cadena multilínea en asp clásico (creo que vbscript es el idioma)?Cadena multilínea en Asp clásico

Quiero una cadena de varias líneas como en Pitón o maravilloso:

def str = "" "hola Soy un multilínea cadena" ""

he buscado mucho, pero no encontró una solución.

Las soluciones también son bienvenidas.

BTW: Tuve en javascript el mismo problema y lo resolvió en el tiempo con una función guardada en una variable. Esta función tenía un comentario de varias líneas, así que pude hacer todo lo posible, excepto el comentario usando expresiones regulares.

Algo como esto:

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

Y después de expresión regular que tiene una cadena que contiene:

hello 
I am a multiline 
string 

Gracias.

Editar:

creo que echaba de menos un punto muy importante. Mi cliente está usando algo así como un "preprocesador" para sus scripts. Se ve así:

Dim str 
str = "<%std_text%>" 

el "Responsable de pre" intercambios "<% std_text%>" con un texto que proviene de una base de datos. Pero este texto tienen roturas en él, así que no puedo poner un procesamiento previo 'se parece a esto '" & vbNewLine' al final de la línea Esto significa que después.':

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

¿Hay alguna forma para conseguir este "texto" en una cadena

Si pudiera escribir algo como esto (maravilloso):?

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

después de "procesamiento previo":

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

¡Sería genial!

+0

¿Quieres multi-línea como en el texto enviado al navegador es de múltiples líneas? ¿O quieres que el texto renderizado sea multilínea? – AnonJr

+0

Estoy intentando algo diferente. Solo edité mi pregunta para una mejor comprensión. Lo siento debería haber publicado esto cuando creé mi pregunta. – OemerA

+0

¿Puede el preprocesador hacer alguna lógica adicional o al tomar los datos de la base de datos puede hacer que la base de datos reemplace las líneas nuevas con "& vbNewline &" –

Respuesta

2

Desafortunadamente, no podrá usar esto como está, por lo que yo sé. Debería modificar el preprocesador para reemplazar el vbNewLine con una variable real vbNewLine en lugar de saltos de línea verdaderos. No hay forma de que VB Script concatene una cadena en varias líneas sin usar & _, lo que requiere que cierre la cadena antes de hacerlo en cada línea, lo que no parece posible con esta configuración.

+0

¡Gracias! Creo que es realmente imposible crear una cadena multilínea con VB Script. – OemerA

3

¿No podría agregar retornos de carro a la cadena?

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

+1

Sí, bastante seguro de que este es su único recurso. –

+0

Simplemente no olvide que Classic ASP/VBScript no le permitirá establecer la variable en la misma línea que la declara. – AnonJr

+1

Malo - ha pasado un tiempo :) –

0

Hay sólo dos maneras que conozco y he estado haciendo esto por más de 10 años.

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

o

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

supongo que es la forma en corte, también:

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

Simplemente no olvide que Classic ASP/VBScript no le permitirá establecer la variable en la misma línea que la declara. – AnonJr

+0

¡Ja, ja, ja, debería haberlo probado realmente, ha estado haciendo más VB.Net que VBS durante tanto tiempo! Gracias @AnonJr! –

+0

No hay problema. Últimamente he estado atrapado en un problema de VBScript aquí, así que tengo todas las pequeñas peculiaridades divertidas en primer plano. – AnonJr

2

¿Quieres multi-línea como en el texto enviado al navegador es de múltiples líneas ? ¿O quieres que el texto renderizado sea multilínea?

Si es el primero, a solution like Mick's funciona. Puede usar vbCrLf o vbNewLine para crear una nueva línea en el texto enviado al navegador. IIRC es preferible ya que proporciona el retorno de carro o el retorno de carro/alimentación de línea según corresponda para el cliente.

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

Si su este último, sólo tiene que poner un <br /> donde desea que el navegador para crear una nueva línea. En este caso, es posible que desee pensar por qué desea que se muestre de la manera que desea que se muestre, ya que puede haber (o no) una mejor manera de hacerlo.

+0

@AnonJr: los saltos están en el texto que proviene de la base de datos. Espero que esto responda tu pregunta. – OemerA

6

pitón:

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

VBScript:

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

También puede escribir una clase StringBuffer encargo etc.

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

apenas beso ... me refiero a un 'preprocesador' para un lenguaje de scripting? Eso no suena bien ....

Si realmente necesita usar el preprocesador (i18n?) Que tendrá que modificarlo como para reemplazar todos los saltos de línea por "& vbcrlf &".

0

Lo más cerca que pude conseguir fue:

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

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