3

テキストファイルに改行を含む次の文字列があります。

0100000184998 1 2500855884500 /RAM PRADHAN 1302 Cold
0100000186936 1 2515407774500 /HARI SHRESTHA 1302 Cold
0100000238562 1 2500211214500 /SARAL SHARMA  1301 Cold
0100000270755 0 1820823730100 /EXPRESS ACCOUNT  9999 Cold
0100000272629 0 1820833290100 /LIZA MAHARJAN 1208 Cold
0100000272637 0 2510171014500 /MAYA SHRESTHA  1208 Cold
0100000272645 0 1800505550100 /DR RIMA BHATTA  1208 Cold
0100000272652 0 1820834930100 /KAMAL BALAMI 1208 Cold
0100000272678 0 1810024300100 /VINOD BHAKTA POKHAREL  1208 Cold

その文字列を配列に入れたいのですが、新しい行ごとに、配列内の 1 つのインデックス位置にジャンプします。次に、データをデータベース テーブルに格納します。したがって、配列は次のようになります

array[0][0] = "0100000184998"
array[0][1] = "1"
array[0][2] = "2500855884500"

array[1][0] = "0100000186936"
array[1][1] = "1"
array[1][3] = "RAM PRADHAN"

ファイルの選択とファイル部分からのテキストの読み込みが完了しました。

        for (int i = 1; i < contents.Length; i++)
        {
           // string[] rowData = sourceData[i].Split(' ');
            string[] words = contents.Split(' ');
            foreach (string word in words)
            {
              Console.WriteLine(word);
            }

        }

ここにConsole.WriteLine(word);は、私が欲しかった個別の単語が含まれています。しかし、多次元配列に変換してデータベーステーブルに渡す方法に行き詰まっています。

4

2 に答える 2

7

古き良きLINQの作品:

@"0100000184998 1 2500855884500 /NITA PRADHAN 1302 Cold
0100000186936 1 2515407774500 /SARAL SHRESTHA 1302 Cold
0100000238562 1 2500211214500 /RASHMI SHARMA  1301 Cold
0100000270755 0 1820823730100 /EXPRESS ACCOUNT  9999 Cold
0100000272629 0 1820833290100 /SUNIL MAHARJAN 1208 Cold
0100000272637 0 2510171014500 /AJANTA SHRESTHA  1208 Cold
0100000272645 0 1800505550100 /DR BINOD BHATTA  1208 Cold
0100000272652 0 1820834930100 /PALAN BALAMI 1208 Cold
0100000272678 0 1810024300100 /BHANU BHAKTA POKHAREL  1208 Cold"
.Split(new char[]{ '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select (x => {
    string[] parts = x.Split(new char[]{ ' ' }, StringSplitOptions.RemoveEmptyEntries);

    return parts.Take(3)
        .Union(new[]{ String.Join(" ", parts.Skip(3).Take(parts.Length - 3 - 2)) })
        .Union(parts.Skip(parts.Length - 2)).ToArray();
}).ToArray();

最初の 3 つの要素と最後の 2 つの要素を取得し、中間にある要素を取得して別の要素を作成します。結果 (最初の 4 つの結果

result[0][0] = '0100000184998'
result[0][1] = '1'
result[0][2] = '2500855884500'
result[0][3] = '/NITA PRADHAN'
result[0][4] = '1302'
result[0][5] = 'Cold'
result[1][0] = '0100000186936'
result[1][1] = '1'
result[1][2] = '2515407774500'
result[1][3] = '/SARAL SHRESTHA'
result[1][4] = '1302'
result[1][5] = 'Cold'
result[2][0] = '0100000238562'
result[2][1] = '1'
result[2][2] = '2500211214500'
result[2][3] = '/RASHMI SHARMA'
result[2][4] = '1301'
result[2][5] = 'Cold'
result[3][0] = '0100000270755'
result[3][1] = '0'
result[3][2] = '1820823730100'
result[3][3] = '/EXPRESS ACCOUNT'
result[3][4] = '9999'
result[3][5] = 'Cold'
result[4][0] = '0100000272629'
result[4][1] = '0'
result[4][2] = '1820833290100'
result[4][3] = '/SUNIL MAHARJAN'
result[4][4] = '1208'
result[4][5] = 'Cold'
result[5][0] = '0100000272637'
result[5][1] = '0'
result[5][2] = '2510171014500'
result[5][3] = '/AJANTA SHRESTHA'
result[5][4] = '1208'
result[5][5] = 'Cold'
result[6][0] = '0100000272645'
result[6][1] = '0'
result[6][2] = '1800505550100'
result[6][3] = '/DR BINOD BHATTA'
result[6][4] = '1208'
result[6][5] = 'Cold'
result[7][0] = '0100000272652'
result[7][1] = '0'
result[7][2] = '1820834930100'
result[7][3] = '/PALAN BALAMI'
result[7][4] = '1208'
result[7][5] = 'Cold'
result[8][0] = '0100000272678'
result[8][1] = '0'
result[8][2] = '1810024300100'
result[8][3] = '/BHANU BHAKTA POKHAREL'
result[8][4] = '1208'
result[8][5] = 'Cold'
于 2013-06-07T04:08:39.947 に答える
0

以下の機能が使えます!!

using System;
using System.IO;
using System.Collections.Generic;


List<string[]> some_function (string fn) {    //fn = "path/to/file"
    string line;
    List<string[]> rval = new List<string[]>();
    if (File.Exists(fn)) {
        StreamReader file = new StreamReader(fn);
        while ((line = file.ReadLine()) != null) {
            string[] value = line.Split(' ');
            rval.Add(value);
        }
        file.Close();
    }
    return rval;
}
于 2013-06-07T04:19:29.880 に答える