4

我正在尝试将多行文本框的每一行的值传输到字符串数组或多维数组中。我还有 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;

我究竟做错了什么?有没有更好的方法来实现这一点?

4

5 回答 5

14

你可以简单地做

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

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

foreach (string text in allLines)
{
    //do whatever with text
}
于 2012-04-29T14:54:22.820 回答
5

您可以使用 List 而不是字符串数组然后 AddRange 方法可以简化您的方法消除 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();

此功能的示例List<string>可以在MSDN上找到

于 2012-04-29T15:01:55.910 回答
3

你可以这样做:

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

如果你需要它在一个数组而不是一个列表中,然后调用:

var array = totalLines.ToArray();

希望能帮助到你。

于 2012-04-29T15:17:35.637 回答
0

这对我有用:

string[] textArray = textBox1.Text.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None);
于 2018-05-17T15:51:30.023 回答
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();
}
于 2019-10-25T14:10:15.340 回答