如何在vb.net中进行逐字字符串



您如何在vb.net中进行 verbatim 字符串?

这是在C#中实现的,如下所示:

String str = @"c:folder1file1.txt";

这意味着反斜线是从字面上对待的,而不是逃生角色。

在vb.net中如何实现?

vb.net中的所有字符串文字都是逐字字符串文字。只需写

Dim str As String = "c:folder1file1.txt"

vb.net不支持内联控制字符。因此,反斜线总是从字面上解释。

唯一需要逃脱的角色是双引号标记,它像在C#

中一样,通过将其加倍而逃脱。
Dim s As String = """Ahoy!"" cried the captain." ' "Ahoy!" cried the captain.

@markJ已经在@Jon Skeet的帖子中指出了这一点。

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"

vb无论如何都不会将 视为逃生字符,因此您可以将字符串写为正常字体:

Dim str = "c:folder1file1.txt"

据我所知,VB无法实现逐字字符串文字的其他主要目标,即允许多行 - 您必须使用VbCrLf。(或Environment.NewLine当然 - 这取决于您的要求。有时您需要特定于系统的行分隔符;有时您需要特定协议的要求等。)

编辑:VB的新版本支持字符串文字中的多行

如有疑问,请查看此比较页面:http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

vb.net

 'No string literal operator     
 Dim filename As String = "c:tempx.dat"

c#

// String literal 
string filename = @"c:tempx.dat";  
string filename = "c:\temp\x.dat";  

vb.net不识别" "作为逃生字符。但是,也许您可能会使用进一步的解决方案(考虑到它的作用比串联缓慢,例如):

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

在这种情况下,字符串" S"包含三行。符号" "是从Regex方法unescape()保护下一个" ",这就是为什么每次重复两次。

" n"是一个c#的"新线"特殊字符。您还可以使用" t"(tab),依此类推。

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>  

vb xml文字不幸的是,在.vbhtml剃须刀页面中无法使用。希望这将在下一个版本中发生变化。

相关内容

  • 没有找到相关文章

最新更新