2013-01-18 41 views
3

我有一个文本文件,看起来像这样:C#文本文件分成2维字符串数组

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'和第二次用','然后把这两个放在一起。

回答

8

这实际上是一个班轮:

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

由于这是一个初学者的问题,这里发生了什么事:

File.ReadLines(文件名)返回所有行的集合在你的文本文件

。选择是一个扩展方法,需要一个函数

S => s.Split(“”)的功能,它分裂由所有逗号字符串s和返回一个ARR字符串。

.ToArray()接受由.Select创建的字符串数组的集合,并使其不在数组中,因此您可以获得数组数组。

+0

JEA,但我认为他已经一样,他什么分裂首先像名称和第二个不同的阵列不是一个大阵列 – Venson

+0

用linqPad确认了这个答案 –

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(); 
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 serilizer到serilize您的孔对象。两个扩展此:

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");