2009-12-16 43 views
5

có khả năng nào có được chuỗi đa dòng trong asp cổ điển không (tôi nghĩ vbscript là ngôn ngữ)?Chuỗi đa luồng trong ASP cổ điển

Tôi muốn có một chuỗi multiline như trong python hoặc groovy:

def str = "" "hello Tôi là một multiline chuỗi" ""

tôi đã tìm kiếm rất nhiều nhưng không tìm thấy một giải pháp.

Cách giải quyết cũng được hoan nghênh.

BTW: Tôi đã có trong javascript cùng một vấn đề và giải quyết nó trở lại trong thời gian với một chức năng được lưu trong một biến. Chức năng này có một nhận xét nhiều dòng trong nó vì vậy tôi có thể vượt qua mọi thứ ngoại trừ nhận xét bằng cách sử dụng regex.

Something như thế này:

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

Và sau Regex tôi nhận được một chuỗi chứa:

hello 
I am a multiline 
string 

Cảm ơn bạn.

Chỉnh sửa:

Tôi nghĩ rằng tôi đã bỏ lỡ một điểm rất quan trọng. Khách hàng của tôi là bạn đang sử dụng thứ gì đó như "bộ xử lý trước" cho tập lệnh của mình. Nó trông như thế này:

Dim str 
str = "<%std_text%>" 

Các "xử lý trước khi" trao đổi "<% std_text%>" với một văn bản mà xuất phát từ một cơ sở dữ liệu. Nhưng văn bản này có phá vỡ trong nó vì vậy tôi không thể chỉ đặt một chế biến sẵn 'nó trông như thế này '" & vbNewline' đến cuối dòng Điều này có nghĩa sau.':

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

Có anyway để có được điều này "text" trong một chuỗi

Nếu tôi có thể viết một cái gì đó như thế này (groovy):

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

sau khi "xử lý trước":

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

Thật tuyệt vời!

+0

Bạn có muốn nhiều dòng như trong văn bản đơn giản gửi đến trình duyệt là nhiều dòng? Hay bạn muốn văn bản được hiển thị là nhiều dòng? – AnonJr

+0

Tôi đang thử một cái gì đó khác nhau. Tôi chỉ chỉnh sửa câu hỏi của mình để hiểu rõ hơn. Xin lỗi đã đăng bài này khi tôi tạo câu hỏi của mình. – OemerA

+0

Trình xử lý trước có thể thực hiện thêm bất kỳ logic nào hay khi lấy dữ liệu từ cơ sở dữ liệu, bạn có thể thay thế dòng mới bằng "& vbNewline &" –

Trả lời

2

Thật không may là bạn sẽ không thể sử dụng tính năng này càng xa càng tốt. Bạn cần phải sửa đổi bộ xử lý trước để thay thế số vbNewLine bằng biến số thực tế vbNewLine thay vì ngắt dòng đúng. Không có cách nào trong VB Script để nối một chuỗi trên nhiều dòng mà không sử dụng & _ yêu cầu bạn phải đóng chuỗi trước khi thực hiện trên mỗi dòng, điều này dường như không thể thực hiện được với thiết lập này.

+0

Cảm ơn bạn! Tôi nghĩ rằng nó thực sự là không thể tạo ra một chuỗi multiline với VB Script. – OemerA

3

Bạn không thể thêm trả về vận chuyển vào chuỗi?

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

+1

Vâng, chắc chắn đây là sự truy đòi duy nhất của bạn. –

+0

Đừng quên rằng Classic ASP/VBScript sẽ không cho phép bạn đặt biến trong cùng một dòng mà bạn khai báo nó. – AnonJr

+1

xấu của tôi - nó được một lúc :) –

0

Chỉ có hai cách mà tôi biết và tôi đã làm điều này cho 10+ năm.

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

hoặc

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

Tôi đoán có cách hack, quá:

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

Chỉ cần đừng quên rằng Classic ASP/VBScript sẽ không cho phép bạn thiết lập các biến trong cùng một dòng bạn khai báo nó. – AnonJr

+0

Ha, ha, ha, nên đã thực sự thử nghiệm nó, đã làm nhiều VB.Net hơn VBS từ rất lâu rồi! Cảm ơn @AnonJr! –

+0

Không thành vấn đề. Tôi đã được mired trong một vấn đề VBScript ở đây gần đây vì vậy tôi đã có tất cả những niềm vui ít quirks đi đầu trong tâm trí của tôi. – AnonJr

2

Bạn có muốn nhiều dòng như trong văn bản đơn giản gửi đến trình duyệt là đa dòng ? Hay bạn muốn văn bản được hiển thị là nhiều dòng?

Nếu thiết bị trước đây, a solution like Mick's hoạt động. Bạn có thể sử dụng vbCrLf hoặc vbNewLine để tạo một dòng mới trong văn bản được gửi tới trình duyệt. IIRC sau này được ưu tiên vì nó cung cấp hoặc là vận chuyển trở lại hoặc vận chuyển trở lại/dòng thức ăn phù hợp cho khách hàng.

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

Nếu sau này của mình, bạn chỉ cần đặt một <br /> nơi bạn muốn trình duyệt để tạo ra một dòng mới. Trong trường hợp này, bạn có thể muốn suy nghĩ về lý do tại sao bạn muốn nó hiển thị theo cách bạn muốn nó hiển thị như có thể (hoặc có thể không) là một cách tốt hơn để làm điều đó.

+0

@AnonJr: các ngắt có trong Văn bản đến từ cơ sở dữ liệu. Hy vọng rằng điều này sẽ trả lời câu hỏi của bạn. – OemerA

6

python:

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

VBScript:

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

Bạn cũng có thể viết một lớp tùy chỉnh StringBuffer, vv

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

Chỉ KISS ... Ý tôi là một 'tiền xử lý' cho một ngôn ngữ kịch bản? Điều đó nghe không hay ...

Nếu bạn thực sự cần sử dụng bộ tiền xử lý (i18n?) Thì bạn sẽ cần sửa đổi nó để thay thế tất cả ngắt dòng theo "& vbcrlf &".

0

Gần nhất tôi có thể nhận được là:

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

Dim multilineStr : multilineStr = Join(Array(_ 
    "Begin"  , _ 
    " my"  , _ 
    " multiline", _ 
    " string!" , _ 
    "End"   _ 
), "<br/>") 
Các vấn đề liên quan