不用搜索字符串。字符

时间:2015-06-11 11:32:50

标签: c# linq search directory

我遇到了搜索文件问题。

我有一个文件说:

1346670589521421983450911196954093762922.nii

引用下面的文件:

1.3.46.670589.5.2.14.2198345091.1196954093.762922.dcm

区别在于(。)位于不同的位置。 有没有人知道如何在没有fullstop(。)的情况下搜索文件? 因为我必须通过不同的文件命名约定遍历300个目录,所以我不能只使用子字符串来分解它们。谢谢你的帮助。

干杯。

刚才意识到可能会混淆我之前描述的内容。

总结我正在尝试使用此字符串1346670589521421983450911196954093762922查看包含数百个.dcms的目录。看起来像1.3.46.670589.5.2.14.2198345091.1196954093.762922.dcm。我怎样才能根据1346670589521421983450911196954093762922字符串进行搜索?解决方案也必须在.net 3.5上。谢谢。

2 个答案:

答案 0 :(得分:0)

string file1 = "1346670589521421983450911196954093762922.nii";
string file2 = "1.3.46.670589.5.2.14.2198345091.1196954093.762922.dcm";
//#1 remove extension
string file1name = System.IO.Path.GetFileNameWithoutExtension(file1);
string file2name = System.IO.Path.GetFileNameWithoutExtension(file2);
//#2 remove .
string file2normalized = file2name.Replace(".", string.Empty);
//# compare
bool equal = file1name == file2normalized;

答案 1 :(得分:0)

所以你想忽略文件名的点和扩展名吗?

您可以使用String.Replace删除点,循环或LINQ查询以及Path - 类:

string searchFileNoExt = Path.GetFileNameWithoutExtension("1346670589521421983450911196954093762922.nii");
var filesToProcess = Directory.EnumerateFiles(rootDir, ".*.", System.IO.SearchOption.AllDirectories)
    .Where(fn => Path.GetFileNameWithoutExtension(fn).Replace(".", "").Equals(searchFileNoExt, StringComparison.InvariantCultureIgnoreCase));
foreach (string file in filesToProcess)
    Console.WriteLine(file);