VB.NET中的多行字符串

161

在 VB.NET 中是否有像 Python 一样的多行字符串的方法?

a = """
multi
line
string
"""

选择什么,PHP还是Python?

$a = <<<END
multi
line
string
END;

当然,如果一个东西不是

"multi" & _
"line

1
顺便说一下:'"multi" & _ <newline> "line"' 是一个字符串字面量,而不是两个。虽然它仍然很丑陋。 - Joel Coehoorn
对于C#,请参考[代码:生成多行字符串文字(Visual C#)](http://msdn.microsoft.com/en-us/library/aa287596(v=vs.71).aspx) - LCJ
我的建议是:在VS 2017中,你的VB.NET代码将被编译。 - ᗩИᎠЯƎᗩ
21个回答

3
你可以(应该?)将字符串放入资源文件中(例如,“My Project”/资源),然后使用以下方式获取它:
 Dim a = My.Resources.Whatever_you_chose

3

声明:我喜欢Python。它的多行字符串只是其中一个原因。

但我也会VB.Net,所以这里是我用于更易读的长字符串的快捷方式。

  Dim lines As String() = {
    "Line 1",
    "Line 2",
    "Line 3"
  }
  Dim s As String = Join(lines, vbCrLf)

1
每个看起来丑陋的"Line.."行末需要"_". - Kenji Noguchi
2
实际上不需要。VB的后续版本(我想是2010年及以后的版本)在许多情况下都不需要使用下划线,包括这里所示的示例。 - Darryl

2
您可以使用XML来实现这一点,例如:
dim vrstr as string = <s>
    some words
    some words
    some
    words
</s>

1
在Visual Studio 2010(VB NET)中,我尝试了以下内容并且运行良好。
Dim HtmlSample As String = <anything>what ever you want to type here with multiline strings</anything>

dim Test1 as string =<a>onother multiline example</a>

1

0
如果您需要在VB.Net中使用带有行代码变量的XML文字,可以按照以下方式进行:
<Tag><%= New XCData(T.Property) %></Tag>

不确定为什么你在这里提到了一个XML字面量,在原始问题中没有看到XML的提及。 - Kmeixner

-1
你也可以这样使用 System.Text.StringBuilder 类:
Dim sValue As New System.Text.StringBuilder
sValue.AppendLine("1st Line")
sValue.AppendLine("2nd Line")
sValue.AppendLine("3rd Line")

然后你可以使用以下代码获取多行字符串:

sValue.ToString()

-1

由于这是一个可读性问题,我使用了以下代码:

MySql = ""
MySql = MySql & "SELECT myTable.id"
MySql = MySql & " FROM myTable"
MySql = MySql & " WHERE myTable.id_equipment = " & lblId.Text

1
这很糟糕。你刚刚创建了4个字符串实例。 - T.S.
我继承了一个遗留的VB6代码,我必须将其移植到VB.NET,但它充满了这些东西!:( 在这种情况下,我更愿意牺牲性能来保持可读性。 - Zac
你不必这样做。你总是可以在不重新分配变量的情况下进行连接,并在这些行内进行格式化。 - T.S.
在我的情况下,切换到正确的语法不适用,因为我需要修改一大堆代码,而项目时间已经不足。 - Zac

-2

使用 vbCrLfvbNewLine。我已经测试过它可以在消息框和许多其他控件中正常工作。

Dim str As String
str = "First line" & vbCrLf & "Second line"
MsgBox(str)
str = "First line" & vbNewLine & "Second line"
MsgBox(str)

它将显示两个带有2行的相同MessageBox。


-9

不,VB.NET目前还没有这样的功能。 但是在下一版VB(Visual Basic 10)中将可用(link)。


你确定吗?我知道他们将允许多行语句,但他们也会允许多行字符串吗?我的意思是像“hello <newline> world”这样的字符串? - Mehrdad Afshari
1
删除行继续符和多行文字字符串是不同的功能。 - JaredPar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接