2013-04-20 66 views
1

我有一個包含3個條目的數組。如何從左到右連接多行字符串

首先數組的條目是一個多字符串:

"My dog 
you   " 

第二個條目太:

" dont like that 
       " 

而且赫德進入過:

" ...  
will die!  " 

現在怎麼我可以將所有多行字符串從左到右像這樣獲取此連接字符串?:

My dog dont like that...  
you will die! 

我的嘗試:

RichTextBox1.Text = String.Join(MyArray(1), MyArray(2)) 

那麼另一個例子更reallistic,我真正需要的是存儲在陣列中的多行字符串(這是ASCII字母)合併,但是當我嘗試加入吧所有我一起加入獲得由升轉跌的字符串:

enter image description here

,我用的代碼:

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

閱讀每一條。拆分導致多行的原因。將第一個添加到StringBuilder 1,第二個添加到StringBuilder 2.完成之後,將StringBuilder 2添加到StringBuilder 1. – Paparazzi 2013-04-20 03:44:12

+0

@Bam感謝您的評論,在問這裏之前,我試圖拆分char(vbcrlf),但後來我得到了完整的連接字符串在一行中。 – ElektroStudios 2013-04-20 04:08:28

+1

您可能需要將每個字符寫入十六進制的Int來查看使用的內容。嘗試envrionment.newline。 – Paparazzi 2013-04-20 13:07:05

回答

1

這應該讓你得到你所需要的。關鍵是創建列表的列表,並在原始數組中的每個項目上的換行符上進行分割。

這應該適用於任意數量的字符串,但每個字符串必須具有相同數量的NewLine字符才能打開。

例如:

"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#(我的偏好,但是這一切都很好:)):

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      List<string> items = new List<string>(); 
      items.Add("My dog\nyou"); 
      items.Add(" dont like that\n"); 
      items.Add(" ...  \n will die!"); 
      List<List<string>> list = new List<List<string>>(); 
      items.ForEach(f => list.Add(f.Split('\n').ToList())); 
      StringBuilder sb = new StringBuilder(); 

      for (int i = 0; i < list[0].Count; i++) 
      { 
       for (int j = 0; j < list.Count; j++) 
       { 
        sb.Append(list[j][i]); 
       } 
       sb.Append(Environment.NewLine); 
      } 

      Console.WriteLine(sb.ToString()); 
      Console.ReadKey(); 
     } 
    } 
}