当前位置:  开发笔记 > 编程语言 > 正文

VB.NET中的多行字符串

如何解决《VB.NET中的多行字符串》经验,为你挑选了10个好方法。

有没有办法像VB一样在VB.NET中使用多行字符串

a = """
multi
line
string
"""

还是PHP?

$a = <<

当然不是

"multi" & _
"line

小智.. 217

您可以使用XML Literals实现类似的效果:

Imports System.XML
Imports System.XML.Linq
Imports System.Core

Dim s As String = Hello
World.Value

请记住,如果您有特殊字符,则应使用CDATA块:

Dim s As String = .Value

2015年更新:

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.

详细信息将添加到Roslyn New-Language-Features-in-VB-14 Github存储库中.



1> 小智..:

您可以使用XML Literals实现类似的效果:

Imports System.XML
Imports System.XML.Linq
Imports System.Core

Dim s As String = Hello
World.Value

请记住,如果您有特殊字符,则应使用CDATA块:

Dim s As String = .Value

2015年更新:

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.

详细信息将添加到Roslyn New-Language-Features-in-VB-14 Github存储库中.



2> JaredPar..:

VB.Net没有这样的功能,它也不会出现在Visual Studio 2010中.jirwin引用的功能称为隐式行继续.它与从多行语句或表达式中删除_有关.这确实消除了使用_终止多行字符串的需要,但VB中仍然没有多行字符串文字.

多行字符串的示例

Visual Studio 2008

Dim x = "line1" & vbCrlf & _
        "line2"

Visual Studio 2010

Dim x = "line1" & vbCrlf & 
        "line2"



3> ozzy432836..:

我用过这个变种:

     Dim query As String = .Value()

它允许字符串中的<>



4> miroxlav..:

自Visual Studio 2015以来,可以使用多行字符串.

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编辑器的识别是否也适用于重构(例如批量重命名变量),那么你是对的,代码重构是可以使用的.没有提到它们也支持IntelliSense,引用计数或代码分析.



5> Lucian Wisch..:

Visual Basic 14.0中引入了多行字符串文字 - https://roslyn.codeplex.com/discussions/57188​​4

您现在可以在VS2015预览中使用 - http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs(请注意,即使定位较旧版本,您仍然可以使用VS2015 .NET框架的版本)

Dim multiline = "multi
line
string"

VB字符串现在基本上与C#逐字字符串相同 - 它们不支持像\n那样的反斜杠转义序列,并且它们允许字符串中的换行符,并且您使用双引号转义引号符号""


谢谢Lucian将多行字符串添加到VB中.也许你可以更新你的答案,因为VS 2015现在是RTM.也许你也可以戳你公司的某个人来更新相关的[MSDN文章](https://msdn.microsoft.com/en-us/library/vstudio/5chcthbw%28v=vs.100%29.aspx?f= 255&MSPPError = -2147217396).

6> 小智..:

这对我来说是一篇非常有用的文章,但是如果你想发送一些变量,没有人提到如何连接,这是99%的时间你需要做的事情.

... <%=变量%> ...

这是你如何做到的:

SELECT * FROM MyTable WHERE FirstName='<%= EnteredName %>' .Value


在这种情况下,您希望避免连接,而是使用SQL参数,因为它们可以更好地抵御SQL注入攻击.我可以看到这对于动态SQL生成很有用(不传递用户输入).

7> RichardJohnn..:

好吧,既然你似乎在你的python上,我可以建议你将你的文本复制到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"

那么至少你可以将它复制出来并放入你的VB代码中.如果你绑定一个热键(最快得到:Autohotkey)来为你的粘贴缓冲区中的任何内容执行此操作,可以获得奖励积分.同样的想法适用于SQL格式化程序.



8> 小智..:

使用XElement类在vb.net中使用多行字符串文字.

Imports System.Xml.Linq

Public Sub Test()

dim sOderBy as string = ""

dim xe as XElement = 
                SELECT * FROM <%= sTableName %>
                  ORDER BY <%= sOrderBy %>
                 

'** conditionally remove a section 
if sOrderBy.Length = 0 then xe..Remove

'** convert XElement value to a string 
dim sSQL as String = xe.Value

End Sub



9> 小智..:

对我来说,这是VB作为一种语言最烦人的事情.说真的,我曾经在一个文件中写了一个字符串,并编写了类似的代码:

Dim s as String = file_get_contents("filename.txt")

只是这样我可以直接在SQL服务器上测试查询,如果需要的话.

我当前的方法是在SQL Server上使用存储过程,然后调用它,以便我可以将参数传递给查询等



10> Nelson..:

我想出了如何同时使用

您基本上必须在VB变量之前终止CDATA标记,然后重新添加它,因此CDATA不捕获VB代码.您需要将整个代码块包装在一个标记中,因为您将拥有多个CDATA块.

Dim script As String = 
    var URL = ']]><%= domain %>]]>
.value

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有