4 回答

TA貢獻1829條經(jīng)驗 獲得超7個贊
輸入是空格分隔的txt,需要它csv
foreach (string line in lines)
{
var parts = line.Split(' ');
string csvLine = string.Join(',', parts);
Console.WriteLine(csvLine);
}
這是一個快速修復。對于“官方”csv,您需要考慮放置"文本字段,因此要區(qū)分文本和數(shù)字。

TA貢獻1820條經(jīng)驗 獲得超10個贊
這項工作可以在一行中完成,無需顯式循環(huán)
string csvfilePath = @"C:\Users\Desktop\ooutput.csv";
string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Desktop\orsc1827.ot2");
var result = string.Join(Environment.NewLine,
lines.Select(x => x.Split(' '))
.Select(x => string.Join(",", x)));
File.WriteAllText(csvfilePath, result);
樣本輸入為
string input = @"
1846223 6833581-1 75522 ADMC 04/17/19 09283609 P9093CC8 - O076FDE4
1846201 6833581-1 75522 ADMC 04/17/19 09284581 P9093CC4 - O076FDE9";
我在結(jié)果字符串中得到了這個輸出
1846223,6833581-1,75522,ADMC,04/17/19,09283609,P9093CC8,-,O076FDE4
1846201,6833581-1,75522,ADMC,04/17/19,09284581,P9093CC4,-,O076FDE9
如果你想把最后兩個子串放在一起,那么你可以添加
var result = string.Join(Environment.NewLine,
lines.Select(x => x.Replace(" - ", "-")
.Split(' ')).Select(x => string.Join(",", x)));
如果數(shù)據(jù)之間有多個空格,則可以通過此更改刪除多余的空格
var result = string.Join(Environment.NewLine,
lines.Select(x => x.Replace(" - ", "-")
.Split(new char[] { ' '}, StringSplitOptions.RemoveEmptyEntries))
.Select(x => string.Join(",", x)));

TA貢獻1719條經(jīng)驗 獲得超6個贊
如果您不確定一行中值之間的空格數(shù),請嘗試這個。
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
string csvline;
foreach (string line in lines)
{
csvline = regex.Replace(line, ",");
Console.WriteLine(csvline);
}
如果你確定你只有一個,你可以
string csvline;
foreach (string csvline in lines){
csvline = line.Replace(' ', ',');
Console.WriteLine(csvline);
}

TA貢獻1886條經(jīng)驗 獲得超2個贊
很難準確地說出您在這里要求的是什么,所以我的回答會非常含糊。
對于分隔文件,您將分隔某種類型的值,因此我將不得不對這些值是什么做出一些假設。String.Join函數(shù)可能正是您在那里尋找的。它產(chǎn)生一個字符串輸出,它是用指定分隔符連接的對象數(shù)組的產(chǎn)物。(例如 [1,2,3] => "1,2,3")
至于將輸出寫入文件,您需要的功能類似于您用來讀取文件的功能。File 對象有一個WriteAllText函數(shù),它將生成一個包含給定文本(作為字符串)的文本文件,或者File.WriteAllLines將有類似的結(jié)果,但帶有一個字符串數(shù)組。
- 4 回答
- 0 關(guān)注
- 105 瀏覽
添加回答
舉報