我正在尝试从.txt文件创建CSV。该文件包含制表符分隔的数据,但在某些情况下具有多个制表符。目前,我可以处理一个制表符到逗号的转换,但是当我遇到多个制表符时,我将其替换为多个逗号,这将使电子表格一团糟。这是我当前的代码:
private void ConvertToCSV(ListBox listBox)
{
string txtpath = DIRPATH + listBoxFiles.SelectedItem + ".txt";
string csvpath = DIRPATH + listBoxFiles.SelectedItem + ".csv";
// Read through rows in the text file and replace tabs with
// commas
var lines = File.ReadAllLines(txtpath);
var csv = lines.Select(row => string.Join(",", row.Split('\t')));
// Replace the .txt extention with .csv
File.WriteAllLines(txtpath, csv);
System.IO.File.Move(txtpath, csvpath);
}
任何帮助将不胜感激!
编辑:这就是我在txt文件中的内容:TabsInTxtFile 在运行上面的代码之后,这就是Excel中的结果:ExcelResult
答案 0 :(得分:2)
首先,我使用REGEX将单个标签替换为多个标签
例如,使用这样的输入:
t m f yf
正则表达式后的输出:
t m f yf
代码正则表达式:
public string Format(string s)
{
string strRegex = @"[\t]+";
Regex myRegex = new Regex(strRegex, RegexOptions.None);
string strReplace = @"[\t]";
return myRegex.Replace(s, strReplace);
}
接下来,我确实像您一样,用替换标签,
private void ConvertToCSV(ListBox listBox)
{
string txtpath = DIRPATH + listBoxFiles.SelectedItem + ".txt";
string csvpath = DIRPATH + listBoxFiles.SelectedItem + ".csv";
// Read through rows in the text file and replace tabs with
// commas
var lines = File.ReadAllLines(txtpath);
var csv = lines.Select(row => string.Join(",", Format(row).Split('\t')));
// Replace the .txt extention with .csv
File.WriteAllLines(txtpath, csv);
System.IO.File.Move(txtpath, csvpath);
}