首页 文章

如何在VB.NET中执行逐字字符串文字?

提问于
浏览
46

你如何在VB.NET中执行逐字字符串文字?

这在C#中实现如下:

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

这意味着反斜杠按字面处理而不是转义字符 .

这是如何在VB.NET中实现的?

7 回答

  • 5

    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.
    
  • 27

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

    如果您绝对需要通过内联XML Literal逐字使用,VB.Net支持这种可憎的功能 .

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

    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"
    
  • 0

    VB不会将 \ 视为转义字符,因此您可以将字符串写为普通文字:

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

    至于我是否有任何方法可以实现逐字字符串文字的另一个主要目标,即允许多行 - you have to use VbCrLf for that,我相信 . (或 Environment.NewLine 当然 - 这取决于您的要求 . 有时您需要系统特定的行分隔符;有时您需要特定协议所需的特定行分隔符等)

    编辑:Newer versions of VB support multiple lines in string literals

  • 2

    如有疑问,请查看此比较页面: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";
    
  • 48

    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”(制表符),依此类推 .

  • 11

    遗憾的是,VB XML文字在.vbhtml razor页面中不起作用 . 希望这将在下一个版本中发生变化 .

  • 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>
    

相关问题