【问题标题】:How do i change the stringbuilder to array in c#如何在c#中将stringbuilder更改为数组
【发布时间】:2016-11-28 16:24:31
【问题描述】:

我有以下代码从用户那里获取文本文件作为输入。我想更改代码以读取输入文本文件并将每一行存储在数组中。我正在使用 c# 控制台应用程序。

 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.Filter = "CBL files (*.CBL)|*.cbl";
            if (op.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = op.FileName;
                string path = op.FileName;
                StringBuilder sb = new StringBuilder();
                using (StreamReader sr = new StreamReader(path))
                {
                    while (sr.Peek() >= 0)
                    {
                        sb.AppendLine(sr.ReadToEnd());
                    }
                    richTextBox1.Text = sb.ToString();
                }
            }
        }

请帮忙,因为我是编码新手。

【问题讨论】:

  • StreamBuilder,不错的新词 ;)
  • 使用richTextBox1.Lines = System.IO.File.ReadAllLines(path);
  • 我完全不清楚你的问题是什么。您当前的代码有什么问题?你想让它做什么呢?如果要将文本插入到数组中,则只需执行此操作,而不是将其附加到 StringBuilder 对象。问题出在哪里?
  • 而不是 sr.ReadToEnd 尝试 sr.ReadLine 假设您希望将每一行添加到 sb 中?

标签: c# arrays


【解决方案1】:

要回答您的具体问题,您可以执行以下操作:

string[] lines = sb.ToString().Split(Environment.NewLine.ToCharArray());

但是,这对于您实际尝试做的事情来说太过分了。有一种将文件读入字符串数组的预构建方法:

string[] lines = File.ReadAllLines(op.FileName);

【讨论】:

  • Split 接收一个 char 数组或一个字符串数组,因此要使其工作,您应该执行类似 .Split(new string[] { Environment.NewLine }, StringSplitOptions.None) 的操作。
  • @Andrew 在技术上是正确的,但我认为将Environment.NewLine 更改为Environment.NewLine.ToCharArray() 更简单。
  • 我也试过了,但它有不同的行为:这会给你一个额外的空字符串,因为它会被 \r\n 分割(如果 NewLine 包括两者,比如在 Windows 中),而不是当两者相邻时。
  • @Andrew 对于 Windows 来说确实如此,但对于地球上的任何其他操作系统来说都不是这样。对于那些,上面的代码可以正常工作。在 Windows 上,您只需将StringSplitOptions.RemoveEmptyEntries 添加到调用的参数中即可。
  • @Andrew 但无论如何,这无关紧要,因为该具体示例只是专门回答 OP 的问题,因为它与在新行上拆分 IO 输入有关。答案的后半部分表明,这实际上并不是解决这种情况的好方法,因为有一种预构建的方法可以将文件的内容作为换行符字符串数组导入。使用第一个解决方案是重新发明轮子,所以不管它是否真的是正确的代码,都不要这样做。
猜你喜欢
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多