在我的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();
}
}
}
答案 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...
如果这足以让您实施自己的解决方案,请告诉我。