检查一个字符串在列表框中出现的次数

本文关键字:列表 字符串 一个 检查 | 更新日期: 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"))