如何在一列中分割数据,该列包含字符串和日期时间数据在Csv文件的新列中?

时间:2016-08-08 08:04:36

标签: c#

在我的Csv文件中,我有一个包含字符串和日期时间类型的列。我想将这些数据分成两列,一列保存字符串,另一列保存日期,但也将日期时间类型转换为字符串。

在做了一些研究之后,我注意到我可以使用string.split函数,该函数将在三个字符之后添加一个逗号,即TIP,然后在新列中推送日期。但是我不知道编写这个过程

class Program
{

    static void Main(string[] args)
    {

        string currentDirectory = Directory.GetCurrentDirectory();
        DirectoryInfo directory = new DirectoryInfo(currentDirectory);
        var fileName = Path.Combine(directory.FullName, "Climate 02_08_2016.csv");
        var fileContents = ReadFile(fileName);
        string[] fileLines = fileContents.Split(new char[] { 'r', 'n' }, StringSplitOptions.RemoveEmptyEntries);
        foreach (var line in fileLines)
        {
            Console.WriteLine(line);

        }





    }

            public static string ReadFile(string fileName)
         {
             var column5 = new List<string>();
            using (var reader = new StreamReader(fileName))
               {



                 while (reader.EndOfStream)
                {
                    var splits = reader.ReadLine().Split(';');
                    column5.Add(splits[4]);
                }

                 return reader.ReadToEnd();
               }


        }



    }

1 个答案:

答案 0 :(得分:0)

String.Split根据指定的分隔符将字符串拆分为字符串数组。 MSDN Reference

您可以使用String.Replace方法用逗号替换空格。

var result = yourStringVar.Replace(' ', ',')

这是完整的代码(稍微简化)。

class Program
{
    static void Main(string[] args)
    {
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Climate 02_08_2016.csv");
        var fileContents = ReadFile(filePath);
        foreach (var line in fileContents)
        {
            Console.WriteLine(line);
        }

        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }

    public static IList<string> ReadFile(string fileName)
    {
        var results = new List<string>();

        var lines = File.ReadAllLines(fileName);
        for (var i = 0; i < lines.Length; i++)
        {
            // Skip the line with column names
            if (i == 0)
            {
                continue;
            }

            // Replace space with a comma
            var replace = lines[i].Replace(' ', ',');

            results.Add(replace);
        }

        return results;
    }
}

我得到以下输出:

TUI,01/01/20
Press any key to exit...

如果这足以让您实施自己的解决方案,请告诉我。