私は、レジスタ値とその内容を引き出すために読んでいるテキストファイルを持っています。アレイから配列を2Dまたは2つの配列に分割する
2線が引き出されている:
0x0003 = 0x0069
0x0007 = 0x0078
Iは、2つの配列または1つの2次元配列にこれらを分割したい(完全なリストは約700です)、どのようなベスト(私は配列を使用して新しいです)
私の目標は、レジスタ3のような配列を検索し、インデックスを見つけ、次に2番目の配列対応するインデックスから情報を抽出することです。
はここList<string> registerFullList1 = new List<string>();
for (int i = 0; i < 2000; i++)
{
string[] importStringArray1 = new string[2000];
importStringArray1[i] = importStringArray1[i] + objReader.ReadLine() + "\r\n";
//code to extract register info from string array
string listsplit1 = Regex.Match(importStringArray1[i], @"(?<= 0x)[0-9A-Fa-z\s\=]{13}").Value;
if (listsplit1.Contains("0x")) //code to add to list only registers and ignore empty lines
{
registerFullList1.Add(Convert.ToString(listsplit1));
}
}
int[] index = new int[2000]; // is there a way here that I don't have to assign 0,1,2,3 to each assignment?
index[0] = registerFullList1.FindIndex(x => x.StartsWith("0003 ="));
Register3.Text = Regex.Match(registerFullList1[index[0]], @"(?<= 0x)[0-9A-F]{4}").Value;
index[1] = registerFullList1.FindIndex(x => x.StartsWith("0007 ="));
Register7.Text = Regex.Match(registerFullList1[index[1]], @"(?<= 0x)[0-9A-F]{4}").Value;
このすべては何の問題も働かないと私はテキストボックス内のレジスタの内容を表示しています、これまでの私のコードです。しかし、私は2つの配列がより適切であるようにしたいと思います.1つはレジスタ番号で、もう1つは内容です。私はそれを把握できない、どんな助けも高く評価されるだろう。答えを読んだ後
UPDATE
最終的なコード、
List<string> registerNumberList = new List<string>();
List<string> registerContentList = new List<string>();
List<string> registerFullList = new List<string>();
for (int i = 0; i < 2000; i++)
{
string[] importStringArray1 = new string[2000];
importStringArray1[i] = importStringArray1[i] + objReader.ReadLine() + "\r\n";
string listsplit1 = Regex.Match(importStringArray1[i], @"(?<= 0x)[0-9A-Fa-z\s\=]{13}").Value; // @"(?<== 0x)[0-9A-F]{4}"
string listsplit2 = Regex.Match(importStringArray1[i], @"(?<= 0x)[0-9A-Fa-z\s\=]{4}").Value;// pulls out the register number from original array
string listsplit3= Regex.Match(importStringArray1[i], @"(?<== 0x)[0-9A-Fa-z\s\=]{4}").Value;//pulls out register content from original array
if (listsplit1.Contains("0x"))
{
registerNumberList.Add(Convert.ToString(listsplit3));//makes a list with register numbers
registerContentList.Add(Convert.ToString(listsplit2));//makes a list with register content
registerFullList.Add(Convert.ToString(listsplit2) + "=" + Convert.ToString(listsplit3));//the full list
}
}
Dictionary <string, string> registers = registerFullList.Select(line => line.Split('=')
.ToArray())
.ToDictionary(items => items[0], items => items[1]); //joins the register numbers and content into a dictionary with just 4 decimal values for each
list1.Text = String.Join("\r\n", registerFullList);
list2.Text = registers["0010"]; // pulls out register info
おかげでみんな
「辞書」を使用してください。 –