如何使用C#

时间:2018-07-10 13:00:08

标签: c# csv

我正在尝试从.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

1 个答案:

答案 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);

            }