C# 将2个文本框内容与分隔符组合

C# 将2个文本框内容与分隔符组合,c#,file,textbox,delimiter,combiners,C#,File,Textbox,Delimiter,Combiners,我有点问题。假设我有两个文本框,一个在左边,内容如下: Win Lose Hello Goodbye 右边一个,包含以下信息: One Two Three Four 现在,在按下按钮时,我想将这两个文本框与冒号分隔符结合起来,这样输出如下: Win:One Lose:Two Hello:Three Goodbye:Four 你知道我怎样才能做到这一点吗?到目前为止,我所尝试的一切都没有奏效。这是我的当前代码,对不起。我不是想让你替我做事,我只是有点困惑: string path = Dir

我有点问题。假设我有两个文本框,一个在左边,内容如下:

Win
Lose
Hello
Goodbye
右边一个,包含以下信息:

One
Two
Three
Four
现在,在按下按钮时,我想将这两个文本框与冒号分隔符结合起来,这样输出如下:

Win:One
Lose:Two
Hello:Three
Goodbye:Four
你知道我怎样才能做到这一点吗?到目前为止,我所尝试的一切都没有奏效。这是我的当前代码,对不起。我不是想让你替我做事,我只是有点困惑:

string path = Directory.GetCurrentDirectory() + @"\Randomized_List.txt";
string s = "";
StringBuilder sb = new StringBuilder();
StreamReader sr1 = new StreamReader("Randomized_UserList.txt");
string line = sr1.ReadLine();
while ((s = line) != null)
{
   var lineOutput = line+":";
   Console.WriteLine(lineOutput);
   sb.Append(lineOutput);
}
sr1.Close();
Console.WriteLine();
StreamWriter sw1 = File.AppendText(path);
sw1.Write(sb);
sw1.Close();

下面的代码演示了一种拆分字符串然后将其串联的方法。起初我误解了这个问题

string left=string.Format(“赢{0}输{0}你好{0}再见”,Environment.NewLine);
string right=string.Format(“一{0}二{0}三{0}四”,Environment.NewLine);
string[]leftSplit=left.Split(新[]{Environment.NewLine},StringSplitOptions.None);
string[]rightSplit=right.Split(new[]{Environment.NewLine},StringSplitOptions.None);
字符串输出=”;
if(leftSplit.Length==rightSplit.Length)
{
for(int i=0;i
下面的代码演示了一种拆分字符串然后将其串联的方法。起初我误解了这个问题

string left=string.Format(“赢{0}输{0}你好{0}再见”,Environment.NewLine);
string right=string.Format(“一{0}二{0}三{0}四”,Environment.NewLine);
string[]leftSplit=left.Split(新[]{Environment.NewLine},StringSplitOptions.None);
string[]rightSplit=right.Split(new[]{Environment.NewLine},StringSplitOptions.None);
字符串输出=”;
if(leftSplit.Length==rightSplit.Length)
{
for(int i=0;i
可以按以下方式按换行符拆分字符串:

string[] lines = theString.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
我认为您应该像这样拆分两个文本框的内容,然后(如果生成的arrray大小相同),连接相应的(第一个数组中的第一个字符串与第二个数组中的第一个字符串形成第二个数组,第一个数组中的第二个字符串与第二个数组中的第二个字符串形成第二个数组,等等)字符串之间带有分号

例如:

var lines1 = textBox1.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
var lines2 = textBox2.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
string result = String.Empty;
if (lines1.Length == lines2.Length)
{
   for(int i=0; i< lines1.Length; ++i)
   {
       result += lines1[i] + ":" + lines2[i] + Environment.NewLine;
   }
}
var lines1=textBox1.Text.Split(新字符串[]{Environment.NewLine},StringSplitOptions.None);
var lines2=textBox2.Text.Split(新字符串[]{Environment.NewLine},StringSplitOptions.None);
字符串结果=string.Empty;
if(lines1.Length==lines2.Length)
{
对于(int i=0;i
可以按以下方式按换行符拆分字符串:

string[] lines = theString.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
我认为您应该像这样拆分两个文本框的内容,然后(如果生成的arrray大小相同),连接相应的(第一个数组中的第一个字符串与第二个数组中的第一个字符串形成第二个数组,第一个数组中的第二个字符串与第二个数组中的第二个字符串形成第二个数组,等等)字符串之间带有分号

例如:

var lines1 = textBox1.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
var lines2 = textBox2.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
string result = String.Empty;
if (lines1.Length == lines2.Length)
{
   for(int i=0; i< lines1.Length; ++i)
   {
       result += lines1[i] + ":" + lines2[i] + Environment.NewLine;
   }
}
var lines1=textBox1.Text.Split(新字符串[]{Environment.NewLine},StringSplitOptions.None);
var lines2=textBox2.Text.Split(新字符串[]{Environment.NewLine},StringSplitOptions.None);
字符串结果=string.Empty;
if(lines1.Length==lines2.Length)
{
对于(int i=0;i
这里有一种可能适合您的不同方法

通过在新行字符上拆分,可以生成一对字符串数组

var tb1 = textBox1.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var tb2 = textBox2.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
然后使用LINQ的方法将它们合并到一个新列表中。每个列表中的第一个元素组合在一起,然后每个列表中的第二个元素组合在一起,依此类推

var combined = tb1.Zip(tb2, (s1, s2) => string.Format("{0}:{1}", s1, s2));

为了使其工作,两个
TextBox
es必须具有相同的行数。如果它们不同,那么
Zip
将不起作用。

这里有一种不同的方法可能适合您

通过在新行字符上拆分,可以生成一对字符串数组

var tb1 = textBox1.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
var tb2 = textBox2.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
然后使用LINQ的方法将它们合并到一个新列表中。每个列表中的第一个元素组合在一起,然后每个列表中的第二个元素组合在一起,依此类推

var combined = tb1.Zip(tb2, (s1, s2) => string.Format("{0}:{1}", s1, s2));

为了使其工作,两个
TextBox
es必须具有相同的行数。如果它们不同,那么
Zip
将不起作用。

如果这是一个winforms应用程序,您可以利用Lines属性执行以下操作

var tb1 = this.textBox1.Lines.Select((line, index) => new { Line = line, Index = index });
var tb2 = this.textBox2.Lines.Select((line, index) => new { Line = line, Index = index });

var q = from t1 in tb1
        join t2 in tb2 on t1.Index equals t2.Index
        select string.Format("{0}:{1}", t1.Line, t2.Line);

this.textBox3.Lines = q.ToArray();

如果这是一个winforms应用程序,您可以利用Lines属性执行以下操作

var tb1 = this.textBox1.Lines.Select((line, index) => new { Line = line, Index = index });
var tb2 = this.textBox2.Lines.Select((line, index) => new { Line = line, Index = index });

var q = from t1 in tb1
        join t2 in tb2 on t1.Index equals t2.Index
        select string.Format("{0}:{1}", t1.Line, t2.Line);

this.textBox3.Lines = q.ToArray();
Split方法通过在参数中使用字符(本例中为新行)拆分字符串,将代表其被调用的字符串转换为字符串数组

在这个移动中,我们必须从textbox1和textbox2创建行数组

现在我们使用任何IEnumerable的Zip方法(这是一个扩展方法,就像聚合方法一样)。 Zip方法的结果是一个IEnumerable,它包含从两个IEnumerable合并而来的元素,这两个IEnumerable使用参数中传递的函数进行合并,在本例中是(s1,s2)=>s1+“:”+s2

此时,我们有一些IEnumerable,其中的元素是来自两个文本框的合并行。我们现在需要做的是使用聚合函数将它们合并成一个字符串。它是一个函数,从第一个参数开始构造结果,对于每个元素,取最后一步的结果并返回新值,即前一个结果和当前元素的某种聚合

Split方法通过在参数中使用字符(本例中为新行)拆分字符串,将代表其被调用的字符串转换为字符串数组

在这个移动中,我们必须从textbox1和textbox2创建行数组

现在我们使用任何IEnumerable的Zip方法(这是一个扩展方法,如Ag