テキストファイルをリストの辞書に変換したい。それを移入方法が異なるクラスであり、かつ以下れるc# - テキストファイルから辞書
public static Dictionary<string, List<string>> myLists = new Dictionary<string, List<string>>();
:
public void TextFileToDictionary2()
{
using (var sr = new StreamReader(File_Path))
{
string line = null;
List<string> InputLineList = new List<string>();
while ((line = sr.ReadLine()) != null)
{
InputLineList.Clear();
// Slice Substrings
string AP = line.Substring(0, 7);
string Address = line.Substring(8, 45);
string JDate = line.Substring(54, 3);
string BMFline = line.Substring(57, 6);
string POD = line.Substring(68, 11);
string DateApok = line.Substring(79, 4);
string checkdigit1 = line.Substring(83, 1);
string poso = line.Substring(84, 9);
string checkdigit2 = line.Substring(93, 1);
string GDate = line.Substring(94, 8);
string AType = line.Substring(102, 2);
string NinPacket = line.Substring(106, 5);
// Construct List
InputLineList.Add(AP);
InputLineList.Add(Address);
InputLineList.Add(JDate);
InputLineList.Add(BMFline);
InputLineList.Add(POD);
InputLineList.Add(DateApok);
InputLineList.Add(checkdigit1);
InputLineList.Add(poso);
InputLineList.Add(checkdigit2);
InputLineList.Add(GDate);
InputLineList.Add(AType);
InputLineList.Add(NinPacket);
//Console.WriteLine(InputLineList[0] + InputLineList[1] + InputLineList[2]);
//BaseDict.niarxosfileadv.Add(POD, InputLineList);
BaseDict.myLists.Add(POD, InputLineList);
Console.WriteLine(BaseDict.myLists[POD][0] + BaseDict.myLists[POD][1] + BaseDict.myLists[POD][2]);
}
Console.WriteLine("#");
Console.WriteLine(BaseDict.myLists["70503490702"][0] + BaseDict.myLists["70503490702"][1] + BaseDict.myLists["70503490702"][2]);
Console.WriteLine(BaseDict.myLists["33221051805"][0] + BaseDict.myLists["33221051805"][1] + BaseDict.myLists["33221051805"][2]);
foreach (KeyValuePair<string, List<string>> kvp in BaseDict.myLists)
{
Console.WriteLine("#");
Console.WriteLine(kvp.Key + "@" + kvp.Value[0] + kvp.Value[1]);
Console.WriteLine(kvp.Key + "@" + BaseDict.myLists[kvp.Key][0] + BaseDict.myLists[kvp.Key][1]);
}
}
}
と入力ファイルは次のようになりますよう辞書は、その別のクラス、BaseDict、で宣言されています:
:0000039#XXXXXX 25000YYYYYYY #1491505400010070503490702030750000078006201
0000040#zzzzzz 21300FFFFFFF #1491487800010533221051805030720000245001201
私の問題は、辞書が正しくロードされているように、それは、この声明に見えるdoesntのことです
BaseDict.myLists.Add(POD, InputLineList);
Console.WriteLine(BaseDict.myLists[POD][0] + BaseDict.myLists[POD][1] + BaseDict.myLists[POD][2]);
は、キー値のペアに対して正しい結果を生成しますが、以下のもの(ハードコードされたキー、ループの後のもの)は、辞書に入力された最後のキーの値のみを返します。
のリストよりも、いくつかのクラスを使用することも良いでしょう、あなたは確かにすべてのあなたのPODのされていますユニーク? – BugFinder
string POD = line.Substring(68、11);この例では、私はいくつかの機密情報を削除するために行を編集したので、以下に示す2つのハードコードされた値: – onlyf
70503490702、33221051805、それらは文字列POD = line.Substring ...によって生成されています。 – onlyf