【问题标题】:C# Function Array [closed]C# 函数数组
【发布时间】:2013-03-06 10:33:24
【问题描述】:

我从一个文本文件 (.txt) 编写程序,我必须使用函数 split 切断世界的界限。但我不知道这个世界如何在函数中写入数组并使用它。

有代码:

    private void button1_Click(object sender, EventArgs e)
    {
        FileStream fs = new FileStream("text.txt", FileMode.Open);
        StreamReader sr = new StreamReader(fs);

        string line;
        while ((line = sr.ReadLine()) != null)
        {
            string[] slova = sr.ReadLine().Split(';');

        }



        sr.Close();
    }

【问题讨论】:

  • 我不明白你的问题
  • 看不懂你,你想对每一行的string[]做什么?
  • 发布您尝试解析的示例文本

标签: c# arrays split


【解决方案1】:

我认为问题在于您调用了两次StreamReader.ReadLine。这种方法使读者前进到下一行。所以第一次调用会用当前行初始化line,下一次调用会读取下一行:

while ((line = sr.ReadLine()) != null)        // <-- first ReadLine
{
    string[] slova = sr.ReadLine().Split(';');// <-- second ReadLine
}

所以只使用变量来代替

while ((line = sr.ReadLine()) != null)
{
    string[] slova = line.Split(';');
    // ....
}

【讨论】:

    【解决方案2】:
    string filePath = "text.txt";
    char wordsSeparator = ';';
    IEnumerable<string> lines = File.ReadAllLines(filePath);
    foreach (var line in lines)
    {
       IEnumerable<string> words = line.Split(new [] {wordsSeparator});
       // TODO: process words?!
    }
    

    【讨论】:

    • 这如何回答这个问题(这绝对不清楚)?您也可以将// TODO: process words?! 放在 OP 的sr.ReadLine().Split(';'); 后面。你只是展示了一种不同的方式来做同样的事情。
    • 但他已经在使用它了:sr.ReadLine().Split(';');
    • 我的错,我在想他不知道如何使用 split 但最后 - 我不知道 String.Split() 有这样一个接受 single 的重载的问题i> 字符,我已经展示了另一种读取文件的方式,因为我认为它比使用流更容易读取。所以downvotes是一个很好的研究这样的答案!
    • @TimSchmelter 此代码不同的一个关键方式是此代码在 while 循环中使用 line,而 OP 代码则不使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 2012-06-04
    • 2015-12-14
    • 2012-09-26
    相关资源
    最近更新 更多