如何在VB.NET中做逐字string字面值?
你如何在VB.NET中逐字string文字?
这是在C#中实现的,如下所示:
String str = @"c:\folder1\file1.txt";
这意味着反斜杠是字面处理而不是转义字符。
这在VB.NET中如何实现?
VB.NET中没有逐字string。 简单写一下
Dim str As String = "c:\folder1\file1.txt"
VB.NET不支持内联控制字符。
所以反斜杠总是从字面上解释。
@MarkJ已经在@Jon Skeet的post中指出了这一点。
VB.Net支持这种可憎的function,如果你绝对需要通过一个内联XML文字逐字逐句。
考虑cachingstring! 不要每次评估这个…
Imports System.Xml.Linq Dim cmdText as String = <![CDATA[ SELECT Field1, Field2, Field3 FROM table WHERE Field1 = 1 ]]>.Value
[编辑2015年1月5日]
VB14 / VS2015支持多行string,没有任何恶意。
Dim cmdText as String = " SELECT Field1, Field2, Field3 FROM table WHERE Field1 = 1"
VB不会把\
作为一个转义字符,所以你可以把string写成一个普通的文字:
Dim str = "c:\folder1\file1.txt"
据我所知,VB没有任何方法来实现逐字string文字的其他主要目标,即允许多行 – 我相信你必须使用VbCrLf
。 (或Environment.NewLine
当然 – 这取决于你的要求,有时你需要系统特定的行分隔符,有时候你需要一个特定的协议等所需的特定的一个)
如果有疑问请看这个比较页面: 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";
VB的XML文字不幸的是不会在.vbhtmlrazor页面中工作。 希望这将在下一个版本中发生变化。
VB.NET不认可“\”作为转义字符。 但是,也许你可能会使用更进一步的解决scheme(考虑到,它比串联慢,比如):
Dim s As String = Regex.Unescape("c:\\folder1\\file1.txt\nc:\\folder1\\file2.txt\nc:\\folder1\\file3.txt")
在这种情况下,string“s”包含三行。 符号“\”是保护下一个“\”正则expression式方法Unescape(),这就是为什么它每次重复两次。
“\ n”是一个类似C#的“新行”特殊字符。 您也可以使用“\ t”(标签)等。
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>