How to specify long string literals in Visual Basic .NET?

前端 未结 3 1819
南旧
南旧 2020-12-17 03:43

Is there a way to conveniently store long string literal in Visual Basic source? I\'m composing a console application with --help printout let\'s say 20 lines l

相关标签:
3条回答
  • 2020-12-17 04:02

    You can also simply use a text resource (Project -> Properties -> Resources) and access them in your code via My.Resources.NameOfTheResource.

    0 讨论(0)
  • 2020-12-17 04:07

    Update:

    In VB.NET 14, which comes with Visual Studio 2015, all string literals support multiple lines. In VB.NET 14, all string literals work like verbatim string literals in C#. For instance:

    Dim longString = "line 1
    line 2
    line 3"
    

    Original Answer:

    c# has a handy multi-line-string-literal syntax using the @ symbol (called verbatim strings), but unfortunately VB.NET does not have a direct equivalent to that (this is no longer true--see update above). There are several other options, however, that you may still find helpful.

    Option 1: Simple Concatenation

    Dim longString As String =
        "line 1" & Environment.NewLine &
        "line 2" & Environment.NewLine &
        "line 3"
    

    Or the less .NET purist may choose:

    Dim longString As String =
        "line 1" & vbCrLf &
        "line 2" & vbCrLf &
        "line 3"
    

    Option 2: String Builder

    Dim builder As New StringBuilder()
    builder.AppendLine("line 1")
    builder.AppendLine("line 2")
    builder.AppendLine("line 3")
    Dim longString As String = builder.ToString()
    

    Option 3: XML

    Dim longString As String = <x>line 1
    line 2
    line 3</x>.Value
    

    Option 4: Array

    Dim longString As String = String.Join(Environment.NewLine, {
        "line 1",
        "line 2",
        "line 3"})
    

    Other Options

    You may also want to consider other alternatives. For instance, if you really want it to be a literal in the code, you could do it in a small c# library of string literals where you could use the @ syntax. Or, you may decide that having it in a literal isn't really necessary and storing the text as a string resource would be acceptable. Or, you could also choose to store the string in an external data file and load it at run-time.

    0 讨论(0)
  • 2020-12-17 04:28

    In VB.net you can simply write "& _" at the end of your string literal to have multi-line strings.

    0 讨论(0)
提交回复
热议问题