如何做一个逐字字符串字面VB.NET?(How to do a verbatim string li

2019-07-03 11:27发布

你如何做一个逐字字符串字面VB.NET?

这是在C#实现如下:

String str = @"c:\folder1\file1.txt";

这意味着反斜杠字面上而不应被视为转义字符。

这是如何在VB.NET实现?

Answer 1:

在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.


Answer 2:

@MarkJ已经在飞碟双向@乔恩的帖子指出了这一点。

VB.Net支持这种可憎的功能,如果你绝对需要通过内联XML文本使用一字不差。

考虑缓存字符串! 不评价这个每次...

Imports System.Xml.Linq

Dim cmdText as String = <![CDATA[
SELECT 
Field1, Field2, Field3 
FROM table
WHERE Field1 = 1
]]>.Value

[编辑2015-JAN-5]

VB14 / VS2015支持没有任何诡计多行字符串。

Dim cmdText as String = "
SELECT 
Field1, Field2, Field3 
FROM table
WHERE Field1 = 1"


Answer 3:

VB不把\作为转义字符,所以你可以只写字符串作为一个正常的文字:

Dim str = "c:\folder1\file1.txt"

据我所知,VB没有实现逐字字符串的另一主要目标,即允许多条线路中的任何方式- 你必须使用VbCrLf为 ,我相信。 (或者Environment.NewLine 。当然-这取决于你的要求,有时你想要的特定系统的行分隔符;有时你想所要求的特定协议等特定的一个)

编辑: 在字符串中较新版本的Visual C ++支持多行



Answer 4:

如有疑问看看这个比较页面: 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";  


Answer 5:

VB.NET不承认“\”作为转义字符。 但是,也许你可以使用进一步的解决方案(考虑到,它的工作速度慢于级联,如):

Dim s As String = Regex.Unescape("c:\\folder1\\file1.txt\nc:\\folder1\\file2.txt\nc:\\folder1\\file3.txt")

在这种情况下,字符串“s”包含三条线。 符“\”是保护未来“\”从正则表达式的方法UNESCAPE(),这就是为什么它两次,每次重复。

“\ n”是一个类似C#的“新线”的特殊字符。 你也可以使用“\ t”的(标签),等等。



Answer 6:

VB XML文本不幸的是不会在.vbhtml剃刀页工作。 希望这将在下一版本中改变。



Answer 7:

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>  


文章来源: How to do a verbatim string literal in VB.NET?