比较列表框之间的字符串

时间:2012-09-19 16:21:36

标签: c# listbox compare

我有两个包含多个数据的列表框,ListBox1具有以下格式:

C:\Users\Charlie\Desktop\Trials\Trial0004COP.txt

并在我的ListBox2中:

Trial0004COP

如何检查列表框1中是否存在Trial0004COP?我使用了Contain()但它不起作用。

3 个答案:

答案 0 :(得分:1)

我会推荐类似的东西:

var searchString = "Trial0004COP";
var isFound = false;
foreach(var name in listbox1.items)
{
    if (Path.GetFileNameWithoutExtension(name).ToLower() == searchString.ToLower())
    {
        _IsFound = true;
        break;
    }
}

请注意,在Windows中,文件名是保留大小写但不区分大小写的,因此您需要检查文件名,忽略其大小写。

你可以在 Linq 中的一行中完成,如果这是你的事。

var searchString = "Trial0004COP";
var isFound = listBox1.Items.Cast<string>()
                            .Any(x => Path.GetFileNameWithoutExtension(x).ToLower() == searchString.ToLower());

答案 1 :(得分:0)

怎么样:

bool found = listBox1.Items.Cast<string>()
                           .Where(x => x.Contains("Trial0004COP"))
                           .Any();

或者要使用String.EndsWith()方法更准确,但如果您想让其正常工作,您还必须添加".txt"

bool found = listBox1.Items.Cast<string>()
                           .Where(x => x.EndsWith("Trial0004COP.txt"))
                           .Any();

修改:

  

嗨Fuex,我正在使用OpenFileDialog来选择一个文件,然后这个文件就是   添加到我的listbox1与所有目录名称。在我的listbox2中我   读取包含多个Trials000“”的另一个文件并将其添加到   它,我想知道我从打开的对话框中选择的文件   存在于我的listboz2

是的,可以这样做:

bool found = false;
if(openFileDialog.ShowDialog() == DialogResult.OK){
   found = listBox.Items.Cast<string>()
                        .Where(x => x.EndsWith(openFileDialog.FileName))
                        .Any();

   if(!found)
      MessageBox.Show(openFileDialog.FileName + " doesn't exist in listBox1"); //show a message
}

答案 2 :(得分:0)

使用 LINQ 可以:

listBox1.Items.Select(e => Path.GetFileNameWithoutExtension(e as string)).Contains("Trial0004COP");