क्या पाइथन जैसे वीबी.नेट में मल्टीलाइन स्ट्रिंग्स होने का कोई तरीका है
a = """
multi
line
string
"""
या PHP?
$a = <<<END
multi
line
string
END;
बेशक कुछ ऐसा है जो नहीं है
"multi" & _
"line
क्या पाइथन जैसे वीबी.नेट में मल्टीलाइन स्ट्रिंग्स होने का कोई तरीका है
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
मल्टी-लाइन स्ट्रिंग शाब्दिक विज़ुअल बेसिक 14 ( विज़ुअल स्टूडियो 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.
विवरण रोसलिन न्यू-लैंग्वेज-फीचर्स-इन-वीबी -14 जीथब रिपॉजिटरी में जोड़े जाते हैं ।
s="... a=~someint~ ..."और फिर s=s.Replace("~someint~', SomeInt)।
VB.Net में ऐसी कोई सुविधा नहीं है और यह विज़ुअल स्टूडियो 2010 में नहीं आएगा। जिरविन जिस सुविधा का उल्लेख कर रहा है, उसे अंतर्निहित लाइन निरंतरता कहा जाता है। यह बहु-पंक्ति कथन या अभिव्यक्ति से _ को हटाने के साथ करना है। यह _ के साथ एक बहुस्तरीय स्ट्रिंग को समाप्त करने की आवश्यकता को दूर करता है लेकिन वीबी में अभी भी कोई बहु-पंक्ति स्ट्रिंग शाब्दिक नहीं है।
मल्टीलाइन स्ट्रिंग के लिए उदाहरण
विजुअल स्टूडियो 2008
Dim x = "line1" & vbCrlf & _
"line2"
विजुअल स्टूडियो 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
"
ध्यान दें कि प्रक्षेपित तार के साथ शुरू होता है $और आपको ध्यान रखने की आवश्यकता होती है ", {और }अंदर समाहित होता है - उन्हें रूपांतरित करें "", {{या}} क्रमशः।
यहाँ आप उपरोक्त कोड उदाहरण के प्रक्षेपित भागों के वास्तविक वाक्यविन्यास पर प्रकाश डाल सकते हैं :
यदि आप आश्चर्य करते हैं कि विज़ुअल स्टूडियो संपादक द्वारा उनकी मान्यता भी रीफैक्टरिंग के साथ काम करती है (जैसे बड़े पैमाने पर चर का नाम बदलकर), तो आप सही हैं, इन के साथ कोड रीफैक्टरिंग कार्य करता है। यह उल्लेख नहीं है कि वे इंटेलीसेनस, संदर्भ गिनती या कोड विश्लेषण का भी समर्थन करते हैं।
मल्टीलाइन स्ट्रिंग शाब्दिक विज़ुअल बेसिक 14.0 में पेश किए गए हैं - https://roslyn.codeplex.com/discussions/571884
आप तब VS2015 पूर्वावलोकन में उपयोग कर सकते हैं, अभी बाहर - http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs (ध्यान दें कि आप अभी भी VS2015 का उपयोग तब भी कर सकते हैं, जब आप किसी पुराने को लक्षित कर रहे हों .NET फ्रेमवर्क का संस्करण)
Dim multiline = "multi
line
string"
VB स्ट्रिंग्स मूल रूप से अब C # वर्बटीम स्ट्रिंग्स के समान हैं - वे \ n जैसे बैकस्लैश एस्केप सीक्वेंस का समर्थन नहीं करते हैं, और वे स्ट्रिंग के भीतर नईलाइन्स की अनुमति देते हैं, और आप डबल-कोट्स के साथ कोट्स सिंबल से बच जाते हैं ""
यह मेरे लिए एक बहुत उपयोगी लेख था, लेकिन कोई भी उल्लेख किया है कि कैसे करने के लिए CONCATENATE मामले में आप कुछ चर भेजने के लिए जो आप समय के 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"
फिर कम से कम आप इसे बाहर कॉपी कर सकते हैं और अपने वीबी कोड में डाल सकते हैं। बोनस अंक यदि आप एक हॉटकी (सबसे तेज़: ऑटोहोटकी के साथ पाने के लिए) बाँधते हैं , तो आपके पेस्ट बफर में जो कुछ भी है उसके लिए ऐसा करने के लिए। एक ही विचार SQL फ़ॉर्मेटर के लिए अच्छी तरह से काम करता है।
XElement वर्ग का उपयोग करके vb.net में बहु-पंक्ति स्ट्रिंग शाब्दिक।
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
मेरे लिए जो एक भाषा के रूप में वीबी के बारे में सबसे अधिक कष्टप्रद बात है। सच में, मैं एक बार एक फ़ाइल में स्ट्रिंग लिखा था और की तर्ज पर कुछ लिखा था:
Dim s as String = file_get_contents("filename.txt")
अगर मुझे आवश्यकता है तो बस मैं सीधे SQL सर्वर पर क्वेरी का परीक्षण कर सकता हूं।
मेरी वर्तमान विधि SQL सर्वर पर एक संग्रहीत कार्यविधि का उपयोग करने के लिए है और बस कॉल करता हूं ताकि मैं पैरामीटर में क्वेरी, आदि को पास कर सकूं
मुझे पता चला कि दोनों का उपयोग कैसे करना है <! [CDATA [के साथ <% = चर के लिए, जो आपको बिना किसी चिंता के कोड करने की अनुमति देता है।
आपको मूल रूप से सीडीबी टैग को वीबी चर से पहले समाप्त करना होगा और फिर इसे फिर से जोड़ना होगा ताकि सीडीएटी वीबी कोड पर कब्जा न करे। आपको एक टैग में पूरे कोड ब्लॉक को लपेटने की आवश्यकता है क्योंकि आपके पास कई सीडीएटीए ब्लॉक होंगे।
Dim script As String = <code><![CDATA[
<script type="text/javascript">
var URL = ']]><%= domain %><![CDATA[/mypage.html';
</script>]]>
</code>.value
डिस्क्लेमर: मुझे अजगर से प्यार है। यह मल्टी-लाइन स्ट्रिंग्स केवल एक कारण है।
लेकिन मैं VB.Net भी करता हूं, इसलिए यहां अधिक पठनीय लंबे तार के लिए मेरा शॉर्ट-कट है।
Dim lines As String() = {
"Line 1",
"Line 2",
"Line 3"
}
Dim s As String = Join(lines, vbCrLf)
दृश्य स्टूडियो 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>
विजुअल बेसिक 14 में विजुअल स्टूडियो 2015 के भाग के रूप में उपलब्ध है। https://msdn.microsoft.com/en-us/magazine/dn890368.aspx
लेकिन अभी तक R # द्वारा समर्थित नहीं है। अच्छी खबर यह है कि जल्द ही उनका समर्थन किया जाएगा! JetBrains को सूचित करने के लिए कृपया Youtrack पर वोट करें, जिनकी आपको आवश्यकता है।
चूंकि यह एक पठनीयता का मुद्दा है, इसलिए मैंने निम्नलिखित कोड का उपयोग किया है:
MySql = ""
MySql = MySql & "SELECT myTable.id"
MySql = MySql & " FROM myTable"
MySql = MySql & " WHERE myTable.id_equipment = " & lblId.Text
का प्रयोग करें vbCrLfया vbNewLine। यह मैसेजबॉक्स और कई अन्य नियंत्रणों के साथ काम करता है जिन्हें मैंने परीक्षण किया था।
Dim str As String
str = "First line" & vbCrLf & "Second line"
MsgBox(str)
str = "First line" & vbNewLine & "Second line"
MsgBox(str)
यह 2 लाइनों के साथ दो समान मैसेजबॉक्स दिखाएगा।
नहीं, VB.NET के पास ऐसी कोई सुविधा नहीं है। यह VB के अगले पुनरावृत्ति में उपलब्ध होगा (विजुअल बेसिक 10) हालाँकि ( लिंक )
अगर यह C # की तरह है (मेरे पास VB.Net स्थापित नहीं है) तो आप @ के साथ एक स्ट्रिंग उपसर्ग कर सकते हैं
foo = @"Multiline
String"
यह @ "C: \ Windows \ System32 \" जैसी चीजों के लिए भी उपयोगी है - यह अनिवार्य रूप से बच निकलता है और मल्टीलाइन पर मुड़ता है।