多行文本框到数组C#

时间:2012-04-29 14:45:38

标签: c# arrays multidimensional-array

我正在尝试将多行文本框的每一行中的值传输到字符串数组或多维数组中。我还有3个多行文本框需要放入同一个数组。以下是我一直尝试的方法之一:

ParkingTimes[0] = tbxtimeLimitS1.Text;

for (int i = 1; i <= 10; i++)
   ParkingTimes[i] = tbxparkingTimesS1.Lines;

ParkingTimes[11] = tbxtimeLimitS2.Lines;

for (int x = 0; x <= 10; x++)
   for (int i = 12; i <= 21; i++)
       ParkingTimes[i] = tbxparkingTimesS2.Lines;

ParkingTimes[11] = tbxtimeLimitS2.Lines[0];

for (int x = 0; x <= 10; x++)
    for (int i = 23; i <= 32; i++)
        ParkingTimes[i] = tbxparkingTimesS3.Lines;

我做错了什么?有没有更好的方法来实现这一目标?

5 个答案:

答案 0 :(得分:11)

你可以简单地做

string[] allLines = textbox.Text.Split('\n');

这将拆分每一行并将结果存储在数组中的相应索引中。然后你可以像这样迭代它们:

foreach (string text in allLines)
{
    //do whatever with text
}

答案 1 :(得分:4)

您可以使用List而不是字符串数组 然后AddRange方法可以简化你的方法eliminatig foreach循环

List<string> ParkingTimes = new List<string>()
ParkingTimes.Add(tbxtimeLimitS1.Text);   
ParkingTimes.AddRange(tbxparkingTimesS1.Lines);
ParkingTimes.AddRange(tbxtimeLimitS2.Lines);   
ParkingTimes.AddRange(tbxparkingTimesS2.Lines);   
ParkingTimes.AddRange(tbxtimeLimitS2.Lines);   
ParkingTimes.AddRange(tbxparkingTimesS3.Lines);   

如果您的代码仍需要字符串数组,则可以使用

返回数组
string[] myLines = ParkingTimes.ToArray();

可以在MSDN here

上找到此List<string>功能的示例

答案 2 :(得分:2)

您可以这样做:

var totalLines = new List<String>();
totalLines.AddRange( tbxparkingTimesS1.Lines );
totalLines.AddRange( tbxparkingTimesS2.Lines );
totalLines.AddRange( tbxparkingTimesS3.Lines );

如果您需要数组而不是列表,请调用:

var array = totalLines.ToArray();

希望它有所帮助。

答案 3 :(得分:0)

这对我有用:

string[] textArray = textBox1.Text.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None);

答案 4 :(得分:0)

string[] split = textBox1.Text.Split('\n');
  

或者您也可以使用:

int srlno=10;
string[] split = new string[srlno];
foreach(string x in textBox1.Lines)
{
     split = (split ?? Enumerable.Empty<string>()).Concat(new[] { x }).ToArray();
}