代码之家  ›  专栏  ›  技术社区  ›  user247702

字符串.格式转义vb与c#

  •  0
  • user247702  · 技术社区  · 14 年前

    在搜索如何转义string.format中的单引号时,我在 SO: Escaping single quote in String.Format()

    但对于vb来说似乎是不同的。我测试过了,确实C需要

    string s = DateTime.Now.ToString("MMM d \\'yy 'at' H:mmm");
    

    当VB需要时

    Dim s As String = Now.ToString("MMM d \'yy 'at' H:mmm")
    

    为什么c需要一个双反斜杠,vb需要一个单反斜杠?对于C用户来说,这可能是一个有点愚蠢的问题,但是虽然我可以阅读C,但我不习惯写它。

    4 回复  |  直到 14 年前
        1
  •  6
  •   Gideon Engelberth    14 年前

    在C中,字符串文本可以包含转义序列,例如\n用于新行或\t用于制表符或\“用于引号。如果不需要转义,可以在文字前面加上@(例如: @"MMM ..." )得到同样的字符串。

    在VB中,不允许转义,因此不需要转义反斜杠。

        2
  •  1
  •   JaredPar    14 年前

    原因是C通过 \ 性格。vb没有这样的转义机制,因此 \ 被解释为 \ .

    在C中,您可以通过使用逐字字符串获得相同的行为。

    @"MMM d \'yy 'at' H:mmm"
    
        3
  •  1
  •   ManniAT    14 年前

    在C中,反斜杠有一个含义(\n是换行符\t制表符….)。 所以backlslahs itselft是一个转义符-你必须转义它:) 或者在字符串前面放置一个at符号-这将生成一个“非转义字符串”(通常用于路径)

        4
  •  1
  •   simendsjo    14 年前

    在C中\将逃跑。您的文本将在'h:mmm'时变为'mmm d\'yy'。不需要在字符串中转义字符。如果要使用“in the string on the other hand,you would need to escape it to not end your string”mmm d \“yy \”at \“h:mmm”。或者您也可以使用@“”字符串方法,它将自动为您转义字符(而不是“尽管”)。所以你可以写@“这不是两行”