String.Format()中的MultiLine字符串?

时间:2013-09-07 20:34:58

标签: .net vb.net string visual-studio multiline

我正在尝试简化尝试在string.format方法中分配多行字符串的一些代码行,但它会在“< / a>”处引发异常字符,它说“表达期望”:

Dim RegistryScript As String = String.Format(<![CDATA[
    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Environment]
    "PATH"="{0}"
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
    "PATH"="{1}"
]]></a>.Value, String.Join(";", PATH_Current), String.Join(";", PATH_Local))

所以如果我不能这样做那么也许我可以做一些类似的字符串技巧?

这是我希望在代码中使其更具可读性的原始代码:

' Current user
IO.File.WriteAllText(FilePath, " Windows Registry Editor Version 5.00" & Environment.NewLine, System.Text.Encoding.Unicode)
IO.File.AppendAllText(FilePath, "[HKEY_CURRENT_USER\Environment]" & Environment.NewLine, System.Text.Encoding.Unicode)
IO.File.AppendAllText(FilePath, String.Format("""PATH""=""{0}""", String.Join(";", PATH_Current)) & Environment.NewLine, System.Text.Encoding.Unicode)

' Local Machine
IO.File.AppendAllText(FilePath, " Windows Registry Editor Version 5.00" & Environment.NewLine, System.Text.Encoding.Unicode)
IO.File.AppendAllText(FilePath, "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]" & Environment.NewLine, System.Text.Encoding.Unicode)
IO.File.AppendAllText(FilePath, String.Format("""PATH""=""{0}""", String.Join(";", PATH_Local)) & Environment.NewLine, System.Text.Encoding.Unicode)

Console.WriteLine(" [+] Backup done!")

我也尝试过使用stringbuilder,但是我得到了一些不可读的代码,这就是为什么我试图将它们全部放在多行字符串中。

3 个答案:

答案 0 :(得分:1)

你可以这样做:

Dim multi As String = <![CDATA[
    Some
    multiline text
]]>.Value

现在你可以做到:

Console.WriteLine(String.Format("multi{0} string = {1}", "line", multi))

答案 1 :(得分:1)

让自己更轻松。

Using sr As New StreamReader({path})
   sr.WriteLine("whatever")
   sr.writeLine("somemore on next line")
End Using

答案 2 :(得分:1)

VB.NET不支持多行字符串,但您可以使用XML文字来模拟它们。但是,您的文字必须是有效的XML。要么以<a>标记开头,要么在最后留下</a>结束标记。