private List<Table> ExtractTables(List<string> tableValues) { List<int> replaceIndex = new List<int>(); bool valueFlag = false; foreach (var item in tableValues) { if (Regex.Match(item, usdPriceRegex).Success) { break; } else if (Regex.Match(item, tablePropertyRegex).Success && !valueFlag) { valueFlag = !valueFlag; } else if (!Regex.Match(item, tablePropertyRegex).Success && valueFlag) { valueFlag = !valueFlag; } else { if (!Regex.Match(item, tablePropertyRegex).Success) { replaceIndex.Add(tableValues.IndexOf(item)); } } } foreach (var item in replaceIndex) { tableValues.Insert(item - 2, tableValues[item]); tableValues.RemoveAt(item + 1); } ConfigReader confReader = new ConfigReader(); List<Table> tables = confReader.GetAllTables(); Table headTable = new Table(); List<Row> rows = new List<Row>(); string tempvalue = string.Empty; int m = 0; foreach (var table in tables) { int n = 0; while (n != table.Rows.Count) { if (Regex.Match(tableValues[m], table.Rows[n].Name).Success) { m++; if (!String.IsNullOrEmpty(tempvalue)) { table.Rows[n].Values.Add(tempvalue); tempvalue = string.Empty; if (m >= tableValues.Count - 1) { break; } } if (!Regex.Match(tableValues[m], tablePropertyRegex).Success) { if (Regex.Match(tableValues[m], usdPriceRegex).Success) { table.Rows[n].Values.Add(tableValues[m]); if (m < tableValues.Count) { table.Rows[n].Values.Add(tableValues[m + 1]); } if (Regex.Match(tableValues[m + 2], usdPriceRegex).Success) { tempvalue = tableValues[m + 2]; } m += 2; n++; } else { table.Rows[n].Values.Add(tableValues[m]); n++; m++; } } else { n++; m--; } } else { m++; } } } return tables; }
public void ConfigTest() { ConfigReader r = new ConfigReader(); r.GetAllTables(); }