2009-12-16 13 views
5

Czy istnieje możliwość uzyskania ciągu wielowierszowego w klasycznym asp (myślę, że vbscript jest językiem)?Ciąg wielowierszowy w klasycznym Asp

chcę multilinii ciąg jak w Pythonie lub Groovy:

def str = "" "hello Jestem multiline string" ""

Szukałem dużo ale nie znaleźliśmy rozwiązanie.

Obejścia są również mile widziane.

BTW: Miałem w javascript ten sam problem i rozwiązałem go w czasie z funkcją zapisaną w zmiennej. Ta funkcja zawierała komentarz wielowierszowy, dzięki czemu mogłem przejść przez wszystko z wyjątkiem komentarza używającego regex.

coś takiego:

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

A po Regex Mam ciąg, który zawiera:

hello 
I am a multiline 
string 

Dziękuję.

Edytuj:

Chyba przegapiłem bardzo ważny punkt. Mój klient używa czegoś w rodzaju "procesora wstępnego" do swoich skryptów. Wygląda to tak:

Dim str 
str = "<%std_text%>" 

"Pre Procesor" wymiana "<% std_text%>" z tekstem, który pochodzi z bazy danych. Ale ten tekst ma przerw w nim, więc nie mogę po prostu umieścić wstępnego przetwarzania „wygląda to tak«”& vbNewline» na końcu linii Oznacza to później.”:

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

Czy mimo aby uzyskać ten "tekst" w ciąg

Gdybym mógł napisać coś takiego (Groovy):

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

po "wstępnej obróbki":

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

Byłoby świetnie!

+0

Chcesz multi-linię jak w zwykły tekst wysyłany do przeglądarki jest multi-line? A może chcesz, aby renderowany tekst był wieloliniowy? – AnonJr

+0

Próbuję czegoś innego. Po prostu edytuję moje pytanie w celu lepszego zrozumienia. Przepraszam, powinienem opublikować to, ponieważ utworzyłem moje pytanie. – OemerA

+0

Czy preprocesor może wykonać dowolną dodatkową logikę lub podczas pobierania danych z bazy danych, czy baza danych może zastępować nowe linie za pomocą "& vbNewline &" –

Odpowiedz

2

Niestety, nie będziesz w stanie używać tego, o ile wiem, tak jak jest. Konieczne będzie zmodyfikowanie procesora wstępnego, aby zastąpić zmienną vbNewLine rzeczywistą zmienną vbNewLine zamiast prawdziwej. W Skrypcie VB nie ma możliwości łączenia łańcuchów na wielu liniach bez użycia & _, co wymaga zamknięcia ciągu przed każdym wierszem, co nie wydaje się możliwe przy tej konfiguracji.

+0

Dziękujemy! Myślę, że naprawdę niemożliwe jest utworzenie ciągu wielowierszowego ze skryptem VB. – OemerA

3

Nie możesz dodać powrotu karetki do ciągu znaków?

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

+1

Tak, jestem pewien, że to twoja jedyna ucieczka. –

+0

Po prostu nie zapominaj, że klasyczny ASP/VBScript nie pozwoli ci ustawić zmiennej w tym samym wierszu, który ją zadeklarujesz. – AnonJr

+1

Moja zła - minęło sporo czasu :) –

0

Są tylko dwa sposoby, które znam i robiłem to przez ponad 10 lat.

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

lub

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

Chyba istnieje hack sposób też:

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

Nie zapominaj, że klasyczny ASP/VBScript nie pozwoli ci ustawić zmiennej w tym samym wierszu, który ją zadeklarujesz. – AnonJr

+0

Ha, ha, ha, powinniśmy to przetestować, robiliśmy więcej VB.Net niż VBS od tak dawna! Dzięki @AnonJr! –

+0

Nie jest problemem. Byłem ostatnio pogrążony w problemie VBScript, więc mam wszystkie zabawne małe dziwactwa na czele mojego umysłu. – AnonJr

2

Chcesz multi-linię jak w zwykły tekst wysyłany do przeglądarki jest multi-line ? A może chcesz, aby renderowany tekst był wieloliniowy?

Jeśli jest to pierwsze, a solution like Mick's działa. Możesz użyć albo vbCrLf lub vbNewLine, aby utworzyć nową linię w tekście wysłanym do przeglądarki. IIRC jest preferowany, ponieważ zapewnia albo powrót karetki, albo powrót karetki/posuw linii, odpowiednio dla klienta.

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

Jeśli jego ostatnich, wystarczy umieścić <br /> gdzie chcesz przeglądarka, aby utworzyć nowy wiersz. W takim przypadku możesz zastanowić się, dlaczego chcesz, aby wyświetlał się w taki sposób, w jaki ma być wyświetlany, ponieważ może (lub nie musi) być lepszym sposobem na to.

+0

@AnonJr: przerwy są w tekście pochodzącym z bazy danych. Mam nadzieję, że to odpowie na twoje pytanie. – OemerA

6

python:

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

VBScript:

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

Można również napisać niestandardową klasę StringBuffer itp

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

Wystarczy pocałunek ... mam na myśli 'preprocesor' dla języka skryptowego? To nie brzmi dobrze ...

Jeśli naprawdę potrzebujesz użyć preprocesora (i18n?), Musisz go zmodyfikować, aby zastąpić wszystkie podziały wiersza "& vbcrlf &".

0

Najbliżej mogę dostać było:

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

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