System.IO.StreamReader my = new System.IO.StreamReader(Server.MapPath(@"IP.txt"), System.Text.Encoding.Default);
string line;
int i = 0,
soso = 0,
baidu = 0,
sogou = 0,
youdao = 0,
yahoo = 0;
while ((line = my.ReadLine()) != null)
{
i++;
if (line.Contains("Sosospider"))
{
soso++;
}
if (line.Contains("Baiduspider"))
{
baidu++;
}
if (line.Contains("Sogou"))
{
sogou++;
}
if (line.Contains("YoudaoBot"))
{
youdao++;
}
if (line.Contains("Yahoo! Slurp"))
{
yahoo++;
}
Response.Write(line + "<br />");
}
-------------------------------------------------------------------
我是用一个集合存放Sosospider, Sogou等这些关键字,然后毎读一行数据就循环和集合中的关键字对比,匹配的话该累计值+1。不知这类算法如何优化,请教下大家。或者您对这个需求有什么建议,我洗耳恭听,谢谢。
------解决方案--------------------------------------------------------
用两个ArrayList,一个存关键字,一个存统计数。
- C# code
while ((line = my.ReadLine()) != null) { i++; for (int d = 0; d < keyword.Count; d++) { if (line.Contains(keyword[d].ToString().Trim())) { int kc = Convert.ToInt16(keycounter[d]); keycounter[d] = (kc + 1).ToString().Trim(); } } Response.Write(line + "<br />"); }
------解决方案--------------------------------------------------------
i*j在很多情况下是远大于i+j的