public bool ParseScore(String htmlData) { htmlData = htmlData.Replace(" ", ""); MatchCollection m = Regex.Matches(htmlData, "<td[^>]*><div[^>]+>([^>]*<a[^>]*>)*([^<]+)(</a>[^>]*)*</div></td>", RegexOptions.Multiline | RegexOptions.IgnoreCase); int count = m.Count; if (count > 0) { Score tmp = new Score(); for (int i = 0; i < count; i += 10) { tmp.term = m[i].Groups[2].ToString().Trim(); tmp.cid = m[i + 1].Groups[2].ToString().Trim(); tmp.name = m[i + 2].Groups[2].ToString().Trim(); tmp.teacher = m[i + 3].Groups[2].ToString().Trim(); tmp.kind = m[i + 4].Groups[2].ToString().Trim(); tmp.credit = Convert.ToSingle(m[i + 5].Groups[2].ToString().Trim()); string hours = m[i + 6].Groups[2].ToString().Trim(); tmp.score = Convert.ToSingle(m[i + 7].Groups[2].ToString().Trim()); if (hours.EndsWith("周")) { hours = hours.Remove(hours.Length - 1, 1); tmp.hours = Convert.ToInt32(hours) * 5; } else if (hours.EndsWith("次")) { hours = hours.Remove(hours.Length - 1, 1); tmp.hours = Convert.ToInt32(hours); } else if (hours == "") tmp.hours = 0; else tmp.hours = Convert.ToInt32(hours); tmp.other = m[i + 8].Groups[2].ToString().Trim(); if (tmp.other == "补考") { tmp.name += "【补考】"; } //if (ignore.ContainsKey(tmp.name)) //{ // tmp.name += "【" +tmp.term+ "】"; //} while (ignore.ContainsKey(tmp.name)) { tmp.name += "【" + tmp.term + "】"; } score.Add(tmp); if (tmp.score == 0) ignore.Add(tmp.name, true); else ignore.Add(tmp.name, false); } return true; } else return false; }
public bool Load( String[] data ) { Clear(); bool other = false; foreach (string tmp in data) { if (tmp == "--------" || tmp == "") { other = true; continue; } if (other) { is_important.Add(tmp, true); } else { string[] vals = tmp.Split('#'); Score s = new Score(); s.cid = vals[0]; s.name = vals[1]; s.teacher = vals[2]; s.term = vals[3]; s.kind = vals[4]; s.credit = Convert.ToSingle(vals[5]); s.hours = Convert.ToInt32(vals[6]); s.score = Convert.ToSingle(vals[7]); s.other = vals[8]; score.Add(s); //ignore.Add(s.name, false); if (s.score == 0) ignore.Add(s.name, true); else ignore.Add(s.name, false); } } return true; }