有没有办法像VB一样在VB.NET中使用多行字符串
a = """
multi
line
string
"""
Run Code Online (Sandbox Code Playgroud)
还是PHP?
$a = <<<END
multi
line
string
END;
Run Code Online (Sandbox Code Playgroud)
当然不是
"multi" & _
"line
Run Code Online (Sandbox Code Playgroud)
小智 217
您可以使用XML Literals实现类似的效果:
Imports System.XML
Imports System.XML.Linq
Imports System.Core
Dim s As String = <a>Hello
World</a>.Value
Run Code Online (Sandbox Code Playgroud)
请记住,如果您有特殊字符,则应使用CDATA块:
Dim s As String = <![CDATA[Hello
World & Space]]>.Value
Run Code Online (Sandbox Code Playgroud)
Visual Basic 14(在Visual Studio 2015中)引入了多行字符串文字.上面的例子现在可以写成:
Dim s As String = "Hello
World & Space"
Run Code Online (Sandbox Code Playgroud)
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存储库中.
Jar*_*Par 48
VB.Net没有这样的功能,它也不会出现在Visual Studio 2010中.jirwin引用的功能称为隐式行继续.它与从多行语句或表达式中删除_有关.这确实消除了使用_终止多行字符串的需要,但VB中仍然没有多行字符串文字.
多行字符串的示例
Visual Studio 2008
Dim x = "line1" & vbCrlf & _
"line2"
Run Code Online (Sandbox Code Playgroud)
Visual Studio 2010
Dim x = "line1" & vbCrlf &
"line2"
Run Code Online (Sandbox Code Playgroud)
ozz*_*836 37
我用过这个变种:
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()
Run Code Online (Sandbox Code Playgroud)
它允许字符串中的<>
mir*_*lav 27
Dim sql As String = "
SELECT ID, Description
FROM inventory
ORDER BY DateAdded
"
Run Code Online (Sandbox Code Playgroud)
您可以将它们与字符串插值组合以最大化有用性:
Dim primaryKey As String = "ID"
Dim inventoryTable As String = "inventory"
Dim sql As String = $"
SELECT {primaryKey}, Description
FROM {inventoryTable}
ORDER BY DateAdded
"
Run Code Online (Sandbox Code Playgroud)
需要注意的是插值字符串开始$
,你需要照顾"
,{
并}
包含内-它们转化成""
,{{
或}}
分别.
在这里,您可以看到上述代码示例的插值部分的实际语法高亮:
如果你想知道Visual Studio编辑器的识别是否也适用于重构(例如批量重命名变量),那么你是对的,代码重构是可以使用的.没有提到它们也支持IntelliSense,引用计数或代码分析.
Luc*_*hik 20
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"
Run Code Online (Sandbox Code Playgroud)
VB字符串现在基本上与C#逐字字符串相同 - 它们不支持像\n那样的反斜杠转义序列,并且它们允许字符串中的换行符,并且您使用双引号转义引号符号""
小智 14
这对我来说是一篇非常有用的文章,但是如果你想发送一些变量,没有人提到如何连接,这是99%的时间你需要做的事情.
... <%=变量%> ...
这是你如何做到的:
<SQL>
SELECT * FROM MyTable WHERE FirstName='<%= EnteredName %>'
</SQL>.Value
Ric*_*hnn 10
好吧,既然你似乎在你的python上,我可以建议你将你的文本复制到python中,如:
s="""this is gonna
last quite a
few lines"""
Run Code Online (Sandbox Code Playgroud)
然后做一个:
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")
Run Code Online (Sandbox Code Playgroud)
要么
print ' & _ \n'.join(map(lambda s: '"%s"' % s, s.split('\n')))
# "this is gonna" & _
# "last quite a" & _
# "few lines"
Run Code Online (Sandbox Code Playgroud)
那么至少你可以将它复制出来并放入你的VB代码中.如果你绑定一个热键(最快得到:Autohotkey)来为你的粘贴缓冲区中的任何内容执行此操作,可以获得奖励积分.同样的想法适用于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
Run Code Online (Sandbox Code Playgroud)
小智 7
对我来说,这是VB作为一种语言最烦人的事情.说真的,我曾经在一个文件中写了一个字符串,并编写了类似的代码:
Dim s as String = file_get_contents("filename.txt")
Run Code Online (Sandbox Code Playgroud)
只是这样我可以直接在SQL服务器上测试查询,如果需要的话.
我当前的方法是在SQL Server上使用存储过程,然后调用它,以便我可以将参数传递给查询等
我想出了如何同时使用<![CDATA [和<%=变量,这使您可以无需担心编码).
您基本上必须在VB变量之前终止CDATA标记,然后重新添加它,因此CDATA不捕获VB代码.您需要将整个代码块包装在一个标记中,因为您将拥有多个CDATA块.
Dim script As String = <code><![CDATA[
<script type="text/javascript">
var URL = ']]><%= domain %><![CDATA[/mypage.html';
</script>]]>
</code>.value
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
127737 次 |
最近记录: |