【问题标题】:multi line textbox to array C#多行文本框到数组 C#
【发布时间】:2012-04-29 14:45:37
【问题描述】:

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

我做错了什么?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: c# arrays multidimensional-array


    【解决方案1】:

    你可以这样做

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

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

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

    【讨论】:

    • 如何将 allLines 中的文本添加到字符串数组中?
    • allLines 将是您的字符串数组。 textbox.Text.Split() 的输出应该是一个字符串数组,然后将其分配给 allLines
    • @JackTcRebelTreble:是的,我的意思是 .Text.Split(),抱歉。 @Nick Udell 是正确的:allLines 变量 带有字符串的数组。
    【解决方案2】:

    您可以使用 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&lt;string&gt; 功能的一个示例可以在 MSDN here 上找到

    【讨论】:

    • 如何在 foreach 循环中将行添加到数组中?
    【解决方案3】:

    你可以这样做:

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

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

    var array = totalLines.ToArray();
    

    希望对你有帮助。

    【讨论】:

    • 谢谢! - 现在只是测试一下
    【解决方案4】:

    这对我有用:

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

    【讨论】:

      【解决方案5】:
      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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多