如何阅读带逗号的文本,然后不带逗号书写

本文关键字:然后 书写 何阅读 文本 | 更新日期: 2023-09-27 18:36:30

我有一个txt文件,其中包含用逗号分隔的数字。

例:

2, 4, 7, 8, 15, 17, 19, 20
1, 5, 13, 14, 15, 17, 19, 20

等等。

我想把它们写在屏幕上,但没有逗号。喜欢:

2 4 7 8 15 17 19 20
1 5 13 14 15 17 19 20

我有这段代码,但它只写出了奇数行,我需要所有的文本。

        StreamReader input = new StreamReader(@"c:'c#'inp.txt");
        string text;
        string[] bits;
        int x;
        do
        {
            text = input.ReadLine();
            bits = text.Split(',');
            for (int i = 0; i < 8; i++)
            {
                x = int.Parse(bits[i]);
                Console.Write(x + " ");
            }
            Console.WriteLine();
        } while ((text = input.ReadLine()) != null);

任何帮助,不胜感激。

如何阅读带逗号的文本,然后不带逗号书写

你在行中读了两次;你应该只读一次。 为此,可以使用循环条件检查的存储值来执行此操作,或者更简单地说,对循环条件使用 EndOfStream

您还应该使用 while ,而不是 do/while 如果甚至没有一行:

StreamReader input = new StreamReader(@"c:'c#'inp.txt");
while (!input.EndOfStream)
{
    string text = input.ReadLine();
    string[] bits = text.Split(',');
    for (int i = 0; i < 8; i++)
    {
        int x = int.Parse(bits[i]);
        Console.Write(x + " ");
    }
    Console.WriteLine();
}

如果你需要做的就是把它写出来,你不需要花那么多精力:

while ((text = input.ReadLine()) != null)
{
    Console.WriteLine(text.Replace(","," "));
} 

流读的用途是这样,.Net 1(恕我直言),使用文件静态来读取/写入/处理数据,而无需访问任何流:文件方法。使用此行将所有数据读入字符串缓冲区:

string data = File.ReadAllText(@"c:'c#'inp.txt");

下面显示了读取数据后如何处理逗号:

//string data = File.ReadAllText(@"c:'c#'inp.txt");
string data = @"2, 4, 7, 8, 15, 17, 19, 20
1, 5, 13, 14, 15, 17, 19, 20";
Console.WriteLine (data.Replace(",", string.Empty));
/* result
2 4 7 8 15 17 19 20
1 5 13 14 15 17 19 20
*/
请注意,

您正在阅读该行两次:

do
{
    text = input.ReadLine();
    // ...
} while ((text = input.ReadLine()) != null);

看起来你可以用一个简单的 while 循环来替换它:

while ((text = input.ReadLine()) != null)
{
    // ...
}

我可能是不正确的,因为我自己是新手,但您可能需要缓冲阅读器而不是流阅读器。

在 Java 中,我会使用 Scanner() 方法打开并读取文本文件,然后使用 Replace() 方法删除逗号。

希望这有帮助。