มีวิธีที่จะมีสตริงหลายบรรทัดใน VB.NET เช่น Python หรือไม่
a = """
multi
line
string
"""
หรือ PHP?
$a = <<<END
multi
line
string
END;
แน่นอนสิ่งที่ไม่
"multi" & _
"line
มีวิธีที่จะมีสตริงหลายบรรทัดใน VB.NET เช่น Python หรือไม่
a = """
multi
line
string
"""
หรือ PHP?
$a = <<<END
multi
line
string
END;
แน่นอนสิ่งที่ไม่
"multi" & _
"line
คำตอบ:
คุณสามารถใช้ตัวอักษร XMLเพื่อให้ได้ผลที่คล้ายกัน:
Imports System.XML
Imports System.XML.Linq
Imports System.Core
Dim s As String = <a>Hello
World</a>.Value
โปรดจำไว้ว่าหากคุณมีอักขระพิเศษคุณควรใช้บล็อก CDATA:
Dim s As String = <![CDATA[Hello
World & Space]]>.Value
มีการแนะนำตัวอักษรสตริงหลายบรรทัดในVisual Basic 14 (ในVisual Studio 2015 ) ตัวอย่างข้างต้นสามารถเขียนเป็น:
Dim s As String = "Hello
World & Space"
MSDN article isn't updated yet (as of 2015-08-01), so check some answers below for details.
โดยมีรายละเอียดเพิ่มให้กับโรสลินใหม่ภาษาคุณสมบัติใน-VB-14ที่เก็บ Github
s="... a=~someint~ ..."
s=s.Replace("~someint~', SomeInt)
VB.Net ไม่มีคุณสมบัติดังกล่าวและจะไม่มาใน Visual Studio 2010 คุณลักษณะที่การอ้างอิง jirwin เรียกว่าการต่อสายโดยนัย มันเกี่ยวข้องกับการลบ _ ออกจากคำสั่งหรือการแสดงออกหลายบรรทัด สิ่งนี้จะลบความจำเป็นในการยุติสตริงหลายบรรทัดด้วย _ แต่ยังคงไม่มีสตริงตัวอักษรหลายบรรทัดใน VB
ตัวอย่างสำหรับสตริงหลายบรรทัด
Visual Studio 2008
Dim x = "line1" & vbCrlf & _
"line2"
Visual Studio 2010
Dim x = "line1" & vbCrlf &
"line2"
ฉันใช้ตัวแปรนี้:
Dim query As String = <![CDATA[
SELECT
a.QuestionID
FROM
CR_Answers a
INNER JOIN
CR_Class c ON c.ClassID = a.ClassID
INNER JOIN
CR_Questions q ON q.QuestionID = a.QuestionID
WHERE
a.CourseID = 1
AND
c.ActionPlan = 1
AND q.Q_Year = '11/12'
AND q.Q_Term <= (SELECT CurrentTerm FROM CR_Current_Term)
]]>.Value()
มันช่วยให้ <> ในสตริง
Dim sql As String = "
SELECT ID, Description
FROM inventory
ORDER BY DateAdded
"
คุณสามารถรวมมันเข้ากับการแก้ไขสตริงเพื่อให้เกิดประโยชน์สูงสุด:
Dim primaryKey As String = "ID"
Dim inventoryTable As String = "inventory"
Dim sql As String = $"
SELECT {primaryKey}, Description
FROM {inventoryTable}
ORDER BY DateAdded
"
โปรดทราบว่าสตริงหยันเริ่มต้นด้วย$
และคุณจำเป็นต้องดูแล"
, {
และ}
อยู่ภายใน - แปลงให้เป็น""
, {{
หรือ}}
ตามลำดับ
ที่นี่คุณสามารถเห็นการเน้นไวยากรณ์จริงของส่วนที่ถูกสอดแทรกของตัวอย่างโค้ดด้านบน:
หากคุณสงสัยว่าการรับรู้ของพวกเขาโดยบรรณาธิการ Visual Studio ยังทำงานร่วมกับ refactoring (เช่นมวลเปลี่ยนชื่อตัวแปร) แล้วคุณจะขวารหัส refactoring ทำงานร่วมกับเหล่านี้ ไม่พูดถึงว่าพวกเขายังสนับสนุน IntelliSense การนับการอ้างอิงหรือการวิเคราะห์รหัส
มีการแนะนำตัวอักษรสตริงหลายบรรทัดใน Visual Basic 14.0 - https://roslyn.codeplex.com/discussions/571884
คุณสามารถใช้ใน VS2015 Preview ได้แล้ววันนี้ - http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs (โปรดทราบว่าคุณยังคงสามารถใช้ VS2015 ได้แม้จะเป็นเป้าหมายที่เก่ากว่า เวอร์ชั่นของ. NET Framework)
Dim multiline = "multi
line
string"
โดยทั่วไปแล้วสตริง VB จะเหมือนกับสตริง C # verbatim ซึ่งไม่สนับสนุน backslash escape ดังนี้เช่น \ n และอนุญาตให้ขึ้นบรรทัดใหม่ภายในสตริงและคุณสามารถหลีกเลี่ยงเครื่องหมายคำพูดด้วยเครื่องหมายคำพูด ""
นี่เป็นบทความที่มีประโยชน์มากสำหรับฉัน แต่ไม่มีใครพูดถึงวิธีการต่อข้อมูลในกรณีที่คุณต้องการส่งตัวแปรบางอย่างซึ่งเป็นสิ่งที่คุณต้องทำ 99% ของเวลา
... <% =ตัวแปร%> ...
นี่คือวิธีที่คุณทำ:
<SQL>
SELECT * FROM MyTable WHERE FirstName='<%= EnteredName %>'
</SQL>.Value
เนื่องจากคุณดูเหมือนจะอยู่บนหลามฉันขอแนะนำให้คุณคัดลอกข้อความของคุณไปเป็นไพ ธ อนเช่น:
s="""this is gonna
last quite a
few lines"""
จากนั้นทำ:
for i in s.split('\n'):
print 'mySB.AppendLine("%s")' % i
# mySB.AppendLine("this is gonna")
# mySB.AppendLine("last quite a")
# mySB.AppendLine("few lines")
หรือ
print ' & _ \n'.join(map(lambda s: '"%s"' % s, s.split('\n')))
# "this is gonna" & _
# "last quite a" & _
# "few lines"
อย่างน้อยคุณก็สามารถคัดลอกและนำไปใส่ในรหัส VB ของคุณ คะแนนโบนัสถ้าคุณผูกปุ่มลัด (เร็วที่สุดที่จะได้รับด้วย: Autohotkey ) เพื่อทำสิ่งนี้สำหรับบัฟเฟอร์ที่คุณวาง แนวคิดเดียวกันทำงานได้ดีสำหรับตัวจัดรูปแบบ SQL
ตัวอักษรสตริงหลายบรรทัดใน vb.net โดยใช้คลาส XElement
Imports System.Xml.Linq
Public Sub Test()
dim sOderBy as string = ""
dim xe as XElement = <SQL>
SELECT * FROM <%= sTableName %>
<ORDER_BY> ORDER BY <%= sOrderBy %></ORDER_BY>
</SQL>
'** conditionally remove a section
if sOrderBy.Length = 0 then xe.<ORDER BY>.Remove
'** convert XElement value to a string
dim sSQL as String = xe.Value
End Sub
สำหรับฉันนั่นเป็นสิ่งที่น่ารำคาญที่สุดเกี่ยวกับ VB ในฐานะภาษา อย่างจริงจังฉันเคยเขียนสตริงในไฟล์และเขียนโค้ดตามบรรทัดของ:
Dim s as String = file_get_contents("filename.txt")
เพียงแค่ฉันสามารถทดสอบแบบสอบถามโดยตรงบนเซิร์ฟเวอร์ SQL ถ้าฉันต้องการ
วิธีการปัจจุบันของฉันคือการใช้ขั้นตอนที่เก็บไว้ใน SQL Server และเพียงเรียกว่าเพื่อให้ฉันสามารถส่งผ่านพารามิเตอร์ไปยังแบบสอบถาม ฯลฯ
ฉันหาวิธีใช้ทั้ง <! [CDATA [พร้อมกับ <% = สำหรับตัวแปรซึ่งช่วยให้คุณสามารถเขียนโค้ดได้โดยไม่ต้องกังวล
คุณต้องยกเลิกแท็ก CDATA ก่อนตัวแปร VB แล้วเพิ่มใหม่อีกครั้งหลังจากนั้น CDATA จะไม่จับรหัส VB คุณต้องล้อมบล็อกโค้ดทั้งหมดไว้ในแท็กเนื่องจากคุณจะมีบล็อก CDATA หลายบล็อก
Dim script As String = <code><![CDATA[
<script type="text/javascript">
var URL = ']]><%= domain %><![CDATA[/mypage.html';
</script>]]>
</code>.value
คุณสามารถ (ควร?) ใส่สตริงลงในไฟล์ทรัพยากร (เช่น "My Project" / Resources) แล้วนำไปใช้
Dim a = My.Resources.Whatever_you_chose
คำเตือน: ฉันรักหลาม มันเป็นสายหลายบรรทัดเป็นเพียงเหตุผลเดียว
แต่ฉันก็ทำ VB.Net ด้วยดังนั้นนี่คือทางลัดของฉันสำหรับสตริงที่มีความยาวที่อ่านได้มากขึ้น
Dim lines As String() = {
"Line 1",
"Line 2",
"Line 3"
}
Dim s As String = Join(lines, vbCrLf)
คุณสามารถใช้ XML สำหรับสิ่งนี้
dim vrstr as string = <s>
some words
some words
some
words
</s>
ใน Visual studio 2010 (VB NET) ฉันลองทำสิ่งต่อไปนี้และทำงานได้ดี
Dim HtmlSample As String = <anything>what ever you want to type here with multiline strings</anything>
dim Test1 as string =<a>onother multiline example</a>
พร้อมใช้งานใน Visual Basic 14 เป็นส่วนหนึ่งของ Visual Studio 2015 https://msdn.microsoft.com/en-us/magazine/dn890368.aspx
แต่ยังไม่รองรับ R # ข่าวดีก็คือพวกเขาจะได้รับการสนับสนุนเร็ว ๆ นี้! โปรดลงคะแนนในYoutrackเพื่อแจ้ง JetBrains ที่คุณต้องการ
หากคุณต้องการ XML ตัวอักษรใน VB.Net ด้วยตัวแปรรหัสบรรทัดนี่คือวิธีที่คุณจะทำ:
<Tag><%= New XCData(T.Property) %></Tag>
คุณสามารถใช้System.Text.StringBuilder
คลาสได้ด้วยวิธีนี้:
Dim sValue As New System.Text.StringBuilder
sValue.AppendLine("1st Line")
sValue.AppendLine("2nd Line")
sValue.AppendLine("3rd Line")
จากนั้นคุณจะได้รับสตริงหลายบรรทัดโดยใช้:
sValue.ToString()
เนื่องจากนี่เป็นปัญหาการอ่านได้ฉันได้ใช้รหัสต่อไปนี้:
MySql = ""
MySql = MySql & "SELECT myTable.id"
MySql = MySql & " FROM myTable"
MySql = MySql & " WHERE myTable.id_equipment = " & lblId.Text
ใช้หรือvbCrLf
vbNewLine
ใช้งานได้กับ MessageBoxes และตัวควบคุมอื่น ๆ ที่ฉันทดสอบ
Dim str As String
str = "First line" & vbCrLf & "Second line"
MsgBox(str)
str = "First line" & vbNewLine & "Second line"
MsgBox(str)
มันจะแสดงสอง MessageBoxes เหมือนกันที่มี 2 บรรทัด
ไม่ VB.NET ยังไม่มีคุณสมบัติดังกล่าว จะสามารถใช้ได้ในรอบถัดไปของ VB (Visual Basic 10) อย่างไรก็ตาม ( ลิงก์ )
ถ้ามันเหมือนกับ C # (ฉันไม่ได้ติดตั้ง VB.Net) คุณสามารถเติมสตริงด้วย @
foo = @"Multiline
String"
สิ่งนี้ยังมีประโยชน์สำหรับสิ่งต่าง ๆ เช่น @ "C: \ Windows \ System32 \" - โดยพื้นฐานแล้วมันจะปิดการหลบหนีและเปิด multiline