检查一个字符串在列表框中出现的次数
本文关键字:列表 字符串 一个 检查 | 更新日期: 2023-09-27 18:09:03
我有一个列表框,我从一个按钮加载项目,代码如下:
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);
}
}
我加载的文件包含list (.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)
如果您想以所提供的格式打印出报告,即
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;
代替
listBox1.Items.Add(line);
你想做这样的事情…
ListBox1.Items.Insert(0,new ListItem("Label", "Value"))