如何在VB.NET中执行 verbatim 字符串文字?
这在C#中实现如下:
String str = @"c:\folder1\file1.txt";
这意味着反斜杠按字面处理而不是转义字符。
这是如何在VB.NET中实现的?
答案 0 :(得分:51)
VB.NET中的所有字符串文字都是逐字字符串文字。只需写下
Dim str As String = "c:\folder1\file1.txt"
VB.NET不支持内联控制字符。所以反斜杠总是按字面解释。
需要转义的唯一字符是双引号,通过将其加倍来转义,就像在C#中一样
Dim s As String = """Ahoy!"" cried the captain." ' "Ahoy!" cried the captain.
答案 1 :(得分:28)
考虑缓存字符串!不要每次评估这个......
Imports System.Xml.Linq
Dim cmdText as String = <![CDATA[
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1
]]>.Value
[编辑2015年1月5日]
VB14 / VS2015支持不带任何恶作剧的多行字符串。
Dim cmdText as String = "
SELECT
Field1, Field2, Field3
FROM table
WHERE Field1 = 1"
答案 2 :(得分:11)
VB不会将\
视为转义字符,因此您只需将该字符串写为普通文字即可:
Dim str = "c:\folder1\file1.txt"
据我所知,VB无法实现逐字字符串文字的另一个主要目标,即允许多行 - you have to use VbCrLf
for that,我相信。 (或Environment.NewLine
当然 - 这取决于您的要求。有时您需要特定于系统的行分隔符;有时您需要特定协议所需的特定行分隔符等。)
编辑:Newer versions of VB support multiple lines in string literals
答案 3 :(得分:5)
如有疑问请查看此比较页面: http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
VB.NET
'No string literal operator
Dim filename As String = "c:\temp\x.dat"
C#
// String literal
string filename = @"c:\temp\x.dat";
string filename = "c:\\temp\\x.dat";
答案 4 :(得分:2)
VB.NET不会将“\”识别为转义字符。 但是,也许你可以使用进一步的解决方案(考虑到它比连接慢,例如):
{{1}}
在这种情况下,字符串“s”包含三行。 符号“\”从正则表达式方法Unescape()保护下一个“\”,这就是它每次重复两次的原因。
“\ n”是类似C#的“新行”特殊字符。您也可以使用“\ t”(制表符),依此类推。
答案 5 :(得分:0)
答案 6 :(得分:0)
Dim sourceText As String =
<string>
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports Microsoft.Win32
Imports System.Linq
Imports System.Text
Imports Roslyn.Compilers
Imports System.ComponentModel
Imports System.Runtime.CompilerServices
Imports Roslyn.Compilers.VisualBasic
Namespace HelloWorld
Module Program
Sub Main(args As String())
Console.WriteLine("Hello, World!")
End Sub
End Module
End Namespace
</string>