在 VB.NET 中是否有像 Python 一样的多行字符串的方法?
a = """
multi
line
string
"""
选择什么,PHP还是Python?
$a = <<<END
multi
line
string
END;
当然,如果一个东西不是
"multi" & _
"line
在 VB.NET 中是否有像 Python 一样的多行字符串的方法?
a = """
multi
line
string
"""
选择什么,PHP还是Python?
$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"
截至2015-08-01,MSDN文章尚未更新,因此请查看下面的一些答案以了解详细信息。
有关详细信息,请参阅RoslynVB 14中的新语言功能 Github存储库。
s="... a=~someint~ ..."
,然后s=s.Replace("~someint~', SomeInt)
。 - Herb CaudillVB.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编辑器是否也支持重构(例如批量重命名变量),那么您是正确的,代码重构适用于这些内容。更不用说他们还支持智能感知,引用计数或代码分析。
多行字符串文字在Visual Basic 14.0中被引入- https://roslyn.codeplex.com/discussions/571884
您可以在VS2015预览版中使用它,现在就可以下载 - http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs(请注意,即使针对较旧版本的.NET框架,仍可以使用VS2015)
Dim multiline = "multi
line
string"
VB字符串基本上与C#逐字字符串相同-它们不支持反斜杠转义序列(如\n),并且它们允许字符串内部有换行符,您可以使用双引号“”来转义引号符。
这篇文章对我来说非常有帮助,但没有人提到如何在需要发送变量的情况下进行连接,而这正是你99%的时间所需做的。
... <%= 变量名 %> ...
以下是具体操作:
<SQL>
SELECT * FROM MyTable WHERE FirstName='<%= EnteredName %>'
</SQL>.Value
好的,既然您似乎对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格式化工具。
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上使用存储过程,然后调用它,以便可以传递参数到查询语句等。
Dim script As String = <code><![CDATA[
<script type="text/javascript">
var URL = ']]><%= domain %><![CDATA[/mypage.html';
</script>]]>
</code>.value