首页 > 解决方案 > 文本文件中的分隔行

问题描述

我有一个 .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 脚本所见。

所以我想知道我是否可以阅读这个文本文件并在找到新的“插入”单词时分隔每一行?

标签: c#

解决方案


@Sayse 给出了一些答案提示。你可以在这里做的是:

  • 在特定分隔符上拆分
  • 对于每个值附加分隔符

在线尝试!

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)

推荐阅读