VB.NET中的多行string
有没有办法在VB.NET中有像python一样的多行string
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
2015年更新:
在Visual Basic 14 (在Visual Studio 2015中 )中引入了多行string文字。 上面的例子现在可以写成:
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.
详细信息被添加到Roslyn New-Language-Features-in-VB-14 Github存储库中。
VB.Net没有这样的function,它将不会在Visual Studio 2010中引入.jirwin引用的function称为隐式行延续。 它与从多行语句或expression式中删除_有关。 这确实消除了用_终止多行string的需要,但在VB中仍然没有多行string文字。
多行string示例
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()
它允许<>在string中
多行string文字在Visual Basic 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"
VBstring现在基本上与C#逐字string相同 – 它们不支持像\ n这样的反斜杠转义序列,并且它们允许在string内换行,并且用双引号“”来转义引号。
这对我来说是一个非常有用的文章,但是没有人提到如果要发送一些variables,如何进行连接 ,这就是99%的时间需要做的事情。
… <%= variable %> …
以下是你如何做到这一点:
<SQL> SELECT * FROM MyTable WHERE FirstName='<%= EnteredName %>' </SQL>.Value
那么,因为你似乎在你的Python,我可以build议你复制你的文本到Python,如:
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"
那么至less你可以复制出来,并把它放在你的VB代码。 如果你绑定一个热键(最快得到: Autohotkey ),你可以为你的粘贴缓冲区中的任何东西做这个。 对于一个SQL格式化程序来说,这个想法也适用。
自Visual Studio 2015以来,可以使用多行string。
Dim sql As String = " SELECT ID, Description FROM inventory ORDER BY DateAdded "
您可以将它们与string插值结合使用以最大限度地提高有用性:
Dim primaryKey As String = "ID" Dim inventoryTable As String = "inventory" Dim sql As String = $" SELECT {primaryKey}, Description FROM {inventoryTable} ORDER BY DateAdded "
请注意,内插string以$
开头,您需要注意内部包含的"
{
和}
,分别将它们转换为""
, {{
或}}
。
在这里,您可以看到上面的代码示例的插值部分的实际语法突出显示 :
如果您认为Visual Studio编辑器的识别function也适用于重构(例如,批量重命名这些variables),那么您是对的, 代码重构可以处理这些重构。 不要提他们也支持智能感知,引用计数或代码分析。
vb.net中使用XElement类的多行string文字。
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作为一种语言最讨厌的事情。 说真的,我曾经把这个string写在一个文件里,写了一些代码:
Dim s as String = file_get_contents("filename.txt")
只是所以我可以直接在SQL服务器上testing查询,如果我需要。
我目前的方法是使用SQL Server上的存储过程,只是调用,所以我可以传递参数的查询等
我想出了如何同时使用<![CDATA [和<%=用于variables,这可以使您无需担心编码。
您基本上必须在VBvariables之前终止CDATA标记,然后在CDATA不捕获VB代码之后重新添加它。 您需要将整个代码块包装在标签中,因为您将拥有多个CDATA块。
Dim script As String = <code><![CDATA[ <script type="text/javascript"> var URL = ']]><%= domain %><![CDATA[/mypage.html'; </script>]]> </code>.value
你可以(应该?)把string放在一个资源文件(例如“我的项目”/资源),然后把它
Dim a = My.Resources.Whatever_you_chose
免责声明:我爱Python。 这是多行string只是一个原因。
但是我也做了VB.Net,所以这里是我的捷径来更可读的长string。
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 Studio 2015的一部分在Visual Basic 14中可用https://msdn.microsoft.com/zh-cn/magazine/dn890368.aspx
但是还没有被R#支持。 好消息是他们很快就会得到支持! 请投Youtrack通知JetBrains您也需要他们。
如果你需要一个带有行代码variables的VB.Net中的XML文字,你将如何做到这一点:
<Tag><%= New XCData(T.Property) %></Tag>
使用vbCrLf
或vbNewLine
。 它与MessageBoxes和我testing的许多其他控件一起工作。
Dim str As String str = "First line" & vbCrLf & "Second line" MsgBox(str) str = "First line" & vbNewLine & "Second line" MsgBox(str)
它将显示两行相同的MessageBoxes。
由于这是一个可读性问题,我使用了下面的代码:
MySql = "" MySql = MySql & "SELECT myTable.id" MySql = MySql & " FROM myTable" MySql = MySql & " WHERE myTable.id_equipment = " & lblId.Text
不,VB.NET还没有这样的function。 它将在VB(Visual Basic 10)的下一个迭代中可用,但是( 链接 )
如果它像C#(我没有安装VB.Net),你可以用@
foo = @"Multiline String"
这对于@“C:\ Windows \ System32 \”这样的东西也很有用 – 它基本上closures了转义并打开了多行。