我尝试导入包含2列(例如日期和价格)的CSV文件,然后在控制台上打印。 但是在我的控制台上,数字不按列排序。他们是一个接一个。
第一个问题:如何在控制台上正确打印?
第二个问题:我可以组合这两个数组,创建矩阵并在控制台上打印矩阵吗?它更容易吗?
这是我的代码:
using system.IO;
var reader=new StreamReader(File.OpenRead(@"filename.csv");
list<string> listA=new list<string>();
list<string> listB=new list<string>();
while (!Reader.EndofStream)
{
var Line=reader.ReadLine();
var valuesline.split(';');
listA.Add(values[0]);
listB.Add(values[1]);
}
console.WriteLine("Column1:");
foreah (var Element in listA)
{
console.write(Element);
console.WriteLine("Column2:");
}
foreah (var Element in listB);
{
console.write(Element);
string[] S= listA.toArray;
string[] o=listB.toArray;
}
答案 0 :(得分:1)
这听起来像是格式化问题。
Console.WriteLine
借用string.Format
以允许文本说明。 Format
允许用户定位项目并提供填充。您想要的是专门填充的列。
以下是一行中三列的示例,请注意数字0,1,2,它们将索引到规范之后的数据中。该索引值旁边是以下数字-15
,它允许填充15个空格以使数据适合每个列:
Console.WriteLine("{0,-15} {1,-15} {2,-15}", "Alpha", "Beta", 12);
Console.WriteLine("{0,-15} {1,-15} {2,-15}", "More Text", "B", 122000);
输出:
Alpha Beta 12
More Text B 122000
有关详细信息,请参阅String Formatting。
答案 1 :(得分:0)
在不知道输出应该是什么样的情况下,我会创建一个类来存储我的结果,然后重写那个类ToString函数。这样您就可以将结果串起来。
注意:我添加了两种方法来执行ToString,以向您展示您可以稍微使用它来获得您在输出中所需的格式。如果您需要标签或诸如此类的东西,可以将其添加到字符串格式中。
编辑:我将CsvRow更改为字符串,以便他们可以获取您的Csv值。我将ToString更改为更符合您的需求。只需让类从CSV中实例化它并将其打印到控制台。 使用系统; 使用System.Collections.Generic;
public class CsvRow
{
public CsvRow()
{
}
public CsvRow(string a, string b)
{
A = a;
B = b;
}
public string A {get; set;}
public string B {get; set;}
public string ToString(int rowNumber)
{
return String.Format("Row{0}: {1} {2}", rowNumber, A, B);
}
}
public class Program
{
public static void Main()
{
var results = new List<CsvRow>();
results.Add(new CsvRow(DateTime.Now.ToString(), "200"));
results.Add(new CsvRow(DateTime.Now.ToString(), "300"));
var i = 0;
foreach (var result in results)
{
Console.WriteLine(result.ToString(i));
i++;
}
}
}