Извлечь определенные символы из строки и просуммировать их. - C#
Формулировка задачи:
Всем привет.
Есть строки
2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 171
2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 15
2010-06-25 05:59:57 10.4.4.103 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.156 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 140
2010-06-25 05:59:57 10.4.4.103 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.156 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 31
нужно посчитать количество одинаковых ip и вывести их в отдельные переменные. При всем этом мы не знаем какие ip могут быть..
Помогите пожалуйста! очень нужно как можно быстрее!
Спасибо огромное.
Решение задачи: «Извлечь определенные символы из строки и просуммировать их.»
textual
Листинг программы
string[] data = {
"2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608 ;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 171",
"2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608 ;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 15",
"2010-06-25 05:59:57 10.4.4.103 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.156 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608 ;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 140",
"2010-06-25 05:59:57 10.4.4.103 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.156 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608 ;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+) 401 2 5 31"
};
Dictionary<string, int> ips = new Dictionary<string, int>();
foreach (string line in data)
{
string key = line.Split(' ')[2];
if ( ips.ContainsKey(key) )
ips[key]++;
else
ips[key] = 1;
}
foreach (KeyValuePair<string, int> ip in ips)
{
Console.WriteLine("IP {0}; Count = {1};", ip.Key, ip.Value);
}
Console.ReadLine();