.net 如何从左到右连接多行字符串

.net 如何从左到右连接多行字符串,.net,vb.net,string,join,.net,Vb.net,String,Join,我有一个包含3个条目的数组 数组的第一个条目是多行字符串: "My dog you " 第二项也是: " dont like that " " ... will die! " 还有人力资源部: " dont like that " " ... will die! " 现在,我如何组合所有多行字符串以从左到右获得该连接字符串,如下所示: My dog don

我有一个包含3个条目的数组

数组的第一个条目是多行字符串:

"My dog 
you            "
第二项也是:

" dont like that
               "
" ...       
 will die!     "
还有人力资源部:

" dont like that
               "
" ...       
 will die!     "
现在,我如何组合所有多行字符串以从左到右获得该连接字符串,如下所示:

My dog dont like that...       
you will die!
我尝试的是:

RichTextBox1.Text = String.Join(MyArray(1), MyArray(2))
另一个更现实的例子是,我真正需要的是组合存储在数组中的多行字符串(ASCII字母),但当我尝试将所有字符串连接在一起时,我会得到一个从上到下连接的字符串:

我使用的代码是:

RichTextBox1.Text = String.Join(" ", Characters(70), Characters(77), Characters(70), Characters(76))

这应该能满足你的需要。关键是创建一个列表列表,并在原始数组中的每个项目上拆分换行符

这适用于任意数量的字符串,但每个字符串必须具有相同数量的换行符才能中断

例如:

"Yo \nDon't kill \nMan!"
"dude! \nme bro!       "
这将导致异常,因为第二行只有一个
\n

要解决此问题,第二行可以更改为:

"Yo \nDon't kill \nMan!"
"dude! \nme bro!     \n"
这将为您提供正确的格式

在VB中:

Imports System.Text
Module Module1

    Sub Main()
        Dim items As List(Of String) = New List(Of String)()
        items.Add("My dog\nyou")
        items.Add(" dont like that\n")
        items.Add(" ...       \n will die!")
        Dim list As List(Of List(Of String)) = New List(Of List(Of String))
        Dim arg() As String = {"\n"}
        For Each listItem As String In items
            list.Add(listItem.Split(arg, StringSplitOptions.None).ToList())
        Next

        Dim sb As StringBuilder = New StringBuilder()

        For i As Integer = 0 To list(0).Count - 1
            For j As Integer = 0 To list.Count - 1
                sb.Append(list(j)(i))
            Next
            sb.Append(Environment.NewLine)
        Next

        Console.WriteLine(sb.ToString())
        Console.ReadKey()
    End Sub
End Module
还有C#(我喜欢,但都很好:):

命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
列表项=新列表();
项目。添加(“我的狗\n”);
items.Add(“不喜欢那样”\n);
添加(“…\n将死亡!”);
列表=新列表();
items.ForEach(f=>list.Add(f.Split('\n').ToList());
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
这应该能满足您的需要。关键是创建一个列表列表,并在原始数组中的每个项目上拆分换行符

这适用于任意数量的字符串,但每个字符串必须具有相同数量的换行符才能中断

例如:

"Yo \nDon't kill \nMan!"
"dude! \nme bro!       "
这将导致异常,因为第二行只有一个
\n

要解决此问题,第二行可以更改为:

"Yo \nDon't kill \nMan!"
"dude! \nme bro!     \n"
这将为您提供正确的格式

在VB中:

Imports System.Text
Module Module1

    Sub Main()
        Dim items As List(Of String) = New List(Of String)()
        items.Add("My dog\nyou")
        items.Add(" dont like that\n")
        items.Add(" ...       \n will die!")
        Dim list As List(Of List(Of String)) = New List(Of List(Of String))
        Dim arg() As String = {"\n"}
        For Each listItem As String In items
            list.Add(listItem.Split(arg, StringSplitOptions.None).ToList())
        Next

        Dim sb As StringBuilder = New StringBuilder()

        For i As Integer = 0 To list(0).Count - 1
            For j As Integer = 0 To list.Count - 1
                sb.Append(list(j)(i))
            Next
            sb.Append(Environment.NewLine)
        Next

        Console.WriteLine(sb.ToString())
        Console.ReadKey()
    End Sub
End Module
还有C#(我喜欢,但都很好:):

命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
列表项=新列表();
项目。添加(“我的狗\n”);
items.Add(“不喜欢那样”\n);
添加(“…\n将死亡!”);
列表=新列表();
items.ForEach(f=>list.Add(f.Split('\n').ToList());
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
阅读每一项。根据导致多行的原因进行拆分。将第一个添加到StringBuilder 1,将第二个添加到StringBuilder 2。完成后,将StringBuilder 2添加到StringBuilder 1中。@Bam感谢您的评论,在此询问之前,我曾尝试拆分字符(vbcrlf),但随后我在一行中得到了完整的连接字符串。您可能需要将每个字符写入十六进制的Int中,以查看使用了什么。请尝试environment.newline.Read。根据导致多行的原因进行拆分。将第一个添加到StringBuilder 1,将第二个添加到StringBuilder 2。完成后,将StringBuilder 2添加到StringBuilder 1中。@Bam感谢您的评论,在此询问之前,我曾尝试拆分字符(vbcrlf),但随后我在一行中得到了完整的连接字符串。您可能需要将每个字符写入十六进制的Int中,以查看使用了什么。试试environment.newline。