我有一个包含3个条目的数组。
数组的第一个条目是多行字符串:
"My dog
you "
第二次进入:
" dont like that
"
并且也是hird条目:
" ...
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))
答案 0 :(得分:1)
这应该可以满足您的需求。关键是创建一个列表列表并拆分原始Array中每个项目的换行符。
这适用于任意数量的字符串,但每个字符串必须具有相同数量的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();
}
}
}