我有一些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#中执行此操作?
答案 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);