删除管道分隔文件中的新行

时间:2017-01-05 14:18:29

标签: c# string csv replace

我有一些CSV格式的文件,用管道分隔。

我需要文件的每一行都在一行中,但我有一些这样的文件:

$userdata = json_decode(file_get_contents("JSON_URL_GOES_HERE"), true)
$u_ID = $userdata['data'][0]['id'];

所以,这意味着第一行现在分为两行。

我说的是5000行文件,现在大约有12000行。我需要替换的列总是第二个和第三个,第一个和第四个总是数字。

我需要将文件的某些列中的0001|Some text|Some longer text that \r\n has new lines on it|1234 替换为空格,因此行只需要一行。

我如何在Microsoft C#中执行此操作?

2 个答案:

答案 0 :(得分:1)

如果要替换的换行总是在第三列中,则可以执行以下操作:拆分字符串,替换每三列中的换行符,然后重新加入字符串:

string text = File.ReadAllText(@"C:\users\sjors\desktop\in.txt");

string[] values = text.Split('|');

StringBuilder SB = new StringBuilder();

for(int i = 0; i < values.Length; i++)
{
    if ( (i + 1) % 3 == 0 )
        values[i] = values[i].Replace("\r\n", " ");

    SB.Append(values[i] + "|");
}

// Trim end to remove the trailing |
File.WriteAllText(@"C:\users\sjors\desktop\out.txt", SB.ToString().TrimEnd('|'));

答案 1 :(得分:1)

您可以尝试这个简单的代码:

        string so = System.IO.File.ReadAllText(@"C:/yourPath/yourOldCSV.CSV");

        string[] arr = so.Split('|');

        //To check if it is on 3rd column
        for (int i = 2; i < arr.Length; i = i + 3)
        {
            arr[i] = arr[i].Replace("\r\n", "");
        }

        string res = String.Join("", arr);

        System.IO.File.WriteAllText("C:/yourPath/yourNewCSV.CSV", res);