我有一个列表框,我使用以下代码从按钮加载项目:
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
string[] lines = System.IO.File.ReadAllLines(ofd.FileName);
foreach (string line in lines)
{
listBox1.Items.Add(line);
}
}
我加载的文件包含格式为
的列表(.txt)username:password:proxy
我的目标是仅查找代理,并计算每个代理出现的次数。
所以我使用这段代码:
List<string> proxies = new List<string>();
foreach (string s in listBox1.Items)
{
proxies.Add(Regex.Match(s, @"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\:\d{2,5}\b", RegexOptions.Singleline).ToString());
}
现在我从列表中的文件中获取所有代理,但是如何以格式保存它,以便每个代理显示它出现的次数?
例如:
proxy1 - 8 (times)
proxy2 - 5 (times)
proxy3 - 4 (times)
答案 0 :(得分:5)
如果您想以所提供的格式打印报告,即
proxy1 - 8 (times)
proxy2 - 5 (times)
proxy3 - 4 (times)
您可以使用 Linq
String report = String.Join(Environment.NewLine,
File.ReadLines(@"C:\MyFile.txt")
.Select(line => line.Split(':')[2])
.GroupBy(item => item)
.Select(chunk => String.Format("{0} - {1} (times)", chunk.Key, chunk.Count())));
Console.Write(report);
// Or
// listBox1.Text = report;
答案 1 :(得分:0)
而不是
listBox1.Items.Add(line);
你想做这样的事......
ListBox1.Items.Insert(0,new ListItem("Label", "Value"))