VB中预先格式化的文本 - vb中的C#@等价物是什么?

时间:2009-05-01 13:46:57

标签: c# .net vb.net

这可能非常明显,而且我很密​​集。在C#中,我可以这样做:

string = @"this is 
            some preformatted 
            text";

我如何在VB中执行此操作?

6 个答案:

答案 0 :(得分:14)

没有一个。

在C#中你有能力做这样的事情“这以一个新的行结束\ n。”,但是在VB中没有这个的概念,你有预定义的变量来处理你喜欢的“这结束于新线“& vbNewLine

因此,字符串文字(@“something \ n”)没有意义,因为在VB中它无论如何都会按字面解释。

VB .NET的问题是语句被认为在一行结束时被终止,所以你不能这样做

Dim _someString as String = "Look at me
  I've wrapped my string
    on multiple lines"

你被迫在每一行终止你的字符串,并使用下划线表示你希望继续你的陈述,这使你做类似的事情

Dim _someString as String = "Look at me " & vbNewLine &_
   "*** add indentation here *** I've wrapped my string " & vbNewLine &_
   vbTab & " on multiple lines" '<- alternate way to indent

答案 1 :(得分:4)

像其他人说的那样,没有@运算符,所以如果你进行大量的字符串操作,请使用 String.Format

恕我直言,这个

Dim text As String = String.Format("this is {0} some preformatted {0} text", Environment.Newline)

比这个

更具可读性
Dim text As String = "this is" & Environment.NewLine _
                 & " some preformatted" & Environment.NewLine _
                 & " text"

答案 2 :(得分:3)

我认为你不能在VB中做到这一点。你必须这样做:

Dim text As String = "this is" & Environment.NewLine _
                     & " some preformatted" & Environment.NewLine _
                     & " text"

编辑:正如评论中所建议的那样,用Environment.NewLine取代了VB特定的vbNewLine

答案 3 :(得分:2)

实际上你可以在vb.net中这样做。您使用称为XML Literals的东西。

Dim mystring = <string>this is
 some preformatted
 text</string>.Value

答案 4 :(得分:1)

VB对字符串操作很弱。没有预格式化或内联转义字符。任何特殊字符都需要附加到字符串中。

答案 5 :(得分:1)

您可能想尝试Alex Papadimoulis的“Smart Paster”加载项。它允许您将字符串粘贴到C#或VB代码中“作为StringBuilder”。