3

我有一个看起来像这样的文本文件:

John,Gauthier,blue,May
Henry,Ford,Red,June
James,Bond,Orange,December

我想将它拆分为一个二维字符串数组,这样我就可以将每行分开,然后将每个单词分开。前任:

mystring[0][0] = "John"
mystring[1][3] = "June"
mystring[2][2] = "Orange"

这是我现在所做的:

string[] words = new string [100];
System.IO.StreamReader myfile = new System.IO.StreamReader("c:\\myfile.csv");

while (fichier.Peek() != -1)
{
  i++;
  words = myfile.ReadLine().Split(',');

}

我被困住了。我可以将其拆分为一维字符串数组,但不能拆分为二维字符串数组。我想我需要拆分两次;第一次使用'\n',第二次使用',',然后将两者放在一起。

4

3 回答 3

8

这实际上是一个单行:

File.ReadLines("myfilename.txt").Select(s=>s.Split(',')).ToArray()

由于这是一个初学者问题,所以这是发生了什么:

File.ReadLines(filename) 返回文本文件中所有行的集合

.Select 是一个带有函数的扩展方法

s=>s.Split(',') 是函数,它将字符串 s 用所有逗号分割并返回一个字符串数组。

.ToArray() 获取由 .Select 创建的字符串数组的集合,并从中创建一个数组,因此您可以获得数组数组。

于 2013-01-18T21:20:08.277 回答
0

试试这个

   var str = File.ReadAllText("myfile.csv");


 var arr = str.Split(new string[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);

   var multi = arr.Select(x => x.Split(',')).ToArray();
于 2013-01-18T21:22:39.440 回答
0

尝试:

var First = new string [100];
var Sec = new string [100];
System.IO.StreamReader myfile = new System.IO.StreamReader("c:\\myfile.csv");

while (fichier.Peek() != -1)
{
  i++;
  var buff = myfile.ReadLine().Split(',');
  First[i] = buff[0];
  Sec[i] = buff[1];
}

其他想法,使用 XML 序列化器来序列化你的洞对象。对此的两个扩展:

    public static void SaveAsXML(this Object A, string FileName)
    {
        var serializer = new XmlSerializer(A.GetType());
        using (var textWriter = new StreamWriter(FileName))
        {
            serializer.Serialize(textWriter, A);
            textWriter.Close();
        }
    }

    public static void LoadFromXML(this Object A, string FileName)
    {
        if (File.Exists(FileName))
        {
            using (TextReader textReader = new StreamReader(FileName))
            {
                XmlSerializer deserializer = new XmlSerializer(A.GetType());
                A = (deserializer.Deserialize(textReader));
            }
        }
    }

在任何静态类中添加比并调用:

YourSaveClassWhitchContainsYourArray.SaveAsXML("Datastore.xml");

或者

YourSaveClassWhitchContainsYourArray.LoadFromXML("Datastore.xml");
于 2013-01-18T21:22:40.973 回答