文本文件中的单独行

时间:2018-09-20 08:47:01

标签: c#

我有一个.txt文件。包含INSERT脚本。

INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3) INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)

and so on... 

我想读取此文件并分别输出每个INSERT语句。 INSERT脚本可能不会被换行分隔。它可以在同一行中继续。可以看到最后一个INSERT脚本。

因此,我想知道是否可以阅读此文本文件,并在每当找到新的“插入”字词时将每一行分开?

1 个答案:

答案 0 :(得分:0)

@Sayse提供了一些答案提示。您可以在这里执行以下操作:

  • 分割为特定的定界符
  • 对于每个值,请添加定界符

Try it Online!

public static void Main()
{
    // search how to read content from a file in C# in case of doubt
    var content = @"INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3) INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)";

    // choose your delimiter
    const string delimiter = "INSERT INTO TABLE ";
    var inserts = content
                  .Split(new []{delimiter}, StringSplitOptions.RemoveEmptyEntries)
                  .Select(x => delimiter + x.TrimEnd());
    foreach (var insert in inserts) 
        Console.WriteLine(insert);
}

输出

INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)
INSERT INTO TABLE (COL1, COL2, COL3) VALUES (1, 2, 3)