[英]C# split textfile into a 2 dimensional string array
我有一个看起来像这样的文本文件:
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',第二次使用','然后将这两者放在一起。
这实际上是一个单行:
File.ReadLines("myfilename.txt").Select(s=>s.Split(',')).ToArray()
由于这是一个初学者的问题,这是正在发生的事情:
File.ReadLines(filename)返回文本文件中所有行的集合
.Select是一个带函数的扩展方法
s => s.Split(',')是函数,它用所有逗号分割字符串s并返回一个字符串数组。
.ToArray()获取由.Select创建的字符串数组的集合,并从中创建一个数组,因此您将获得数组数组。
尝试这个
var str = File.ReadAllText("myfile.csv");
var arr = str.Split(new string[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
var multi = arr.Select(x => x.Split(',')).ToArray();
尝试:
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来破坏你的洞对象。 两个扩展:
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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.