3

次のようなテキストファイルがあります。

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

それを 2 次元の文字列配列に分割して、各行と各単語を分離したいと考えています。元:

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(',');

}

私は立ち往生しています。それを 1 次元の文字列配列に分割することはできますが、2 次元の文字列配列には分割できません。私はそれを2回分割する必要があると思います; 最初は '\n' で、2 回目は ',' で、次にこれら 2 つを結合します。

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 serilizer を使用してホール オブジェクトをシリアライズします。このための 2 つの拡張機能:

    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 に答える