4 回答
TA贡献1829条经验 获得超7个赞
输入是空格分隔的txt,需要它csv
foreach (string line in lines)
{
var parts = line.Split(' ');
string csvLine = string.Join(',', parts);
Console.WriteLine(csvLine);
}
这是一个快速修复。对于“官方”csv,您需要考虑放置"文本字段,因此要区分文本和数字。
TA贡献1820条经验 获得超10个赞
这项工作可以在一行中完成,无需显式循环
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";
我在结果字符串中得到了这个输出
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)));
如果数据之间有多个空格,则可以通过此更改删除多余的空格
var result = string.Join(Environment.NewLine,
lines.Select(x => x.Replace(" - ", "-")
.Split(new char[] { ' '}, StringSplitOptions.RemoveEmptyEntries))
.Select(x => string.Join(",", x)));
TA贡献1719条经验 获得超6个赞
如果您不确定一行中值之间的空格数,请尝试这个。
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条经验 获得超2个赞
很难准确地说出您在这里要求的是什么,所以我的回答会非常含糊。
对于分隔文件,您将分隔某种类型的值,因此我将不得不对这些值是什么做出一些假设。String.Join函数可能正是您在那里寻找的。它产生一个字符串输出,它是用指定分隔符连接的对象数组的产物。(例如 [1,2,3] => "1,2,3")
至于将输出写入文件,您需要的功能类似于您用来读取文件的功能。File 对象有一个WriteAllText函数,它将生成一个包含给定文本(作为字符串)的文本文件,或者File.WriteAllLines将有类似的结果,但带有一个字符串数组。
- 4 回答
- 0 关注
- 66 浏览
添加回答
举报