1

視覚的にレイアウトされている場合、100 行と 2 列、または (99,1) で構成される配列があります。私がやりたいのは、(0-99,0) が 1 つの配列にあり、(0-99,1) が別の配列にあるような 2 つの 1 次元配列を作成することです。C#でこれを行うにはどうすればよいですか? これが私のコードで、ほとんどありませんが、完全ではありません。

   //Create Arrays A and B for the 2 columns of arrData

        string sourceFilePath = @"c:\data.txt";
        var arrData = File.ReadLines(sourceFilePath).Select(line => line.Split('\t')).ToArray(); 


        string[] arrA = new string[arrData.Length]; 
        string[] arrB = new string[arrData.Length]; 

        long lngCounter;

        for (lngCounter = 0; lngCounter <= arrData.Length; lngCounter++)
        {
            arrA[lngCounter] = arrData[lngCounter,0];
            arrB[lngCounter] = arrData[lngCounter,1];
        }
4

3 に答える 3

3

簡単な修正:

            for (lngCounter = 0; lngCounter < arrData.Length; lngCounter++)
            {
                arrA[lngCounter] = arrData[lngCounter][0];
                arrB[lngCounter] = arrData[lngCounter][1];
            }

配列作成の出力は長方形ではなく、ギザギザの配列になることに注意してください。あなたは長方形を仮定しました。

テキストファイルに2列未満になるとすぐにコードが壊れることも追加したいと思います。ですから、それを知っておいてください。

于 2012-09-04T19:52:44.323 に答える
1

受け入れられた回答とほとんど同じですが、数行少ない

    string[][] jaggedString = new string[3][];

    jaggedString[0] = new[] {"test", "test1"};
    jaggedString[1] = new[] {"free", "free1"};
    jaggedString[2] = new[] {"done", "done1"};

    var array1 = jaggedString.Select(c => c[0]).ToArray();
    var array2 = jaggedString.Select(c => c[1]).ToArray();

2 行:

var array1 = arrData.Select(c => c[0]).ToArray();
var array2 = arrData.Select(c => c[1]).ToArray();
于 2012-09-04T19:59:23.370 に答える
1

宿題?

[少なくとも] 2 列の長方形配列を 2 つの 1-d 配列に分割する 1 つの方法を次に示します。

private static void Split<T>( T[,] src , out T[] col1 , out T[] col2 )
{
  int  rows = src.GetLength(0) ;

  if ( src.GetLength(1) < 2 ) throw new ArgumentException("src") ;

  col1 = new T[ src.GetLength(0) ] ;
  col2 = new T[ src.GetLength(0) ] ;

  for( int i = 0 ; i < rows ; ++i )
  {
    col1[i] = src[i,0] ;
    col2[i] = src[i,1] ;
  }

  return ;
}
于 2012-09-04T19:48:30.020 に答える