我遇到了搜索文件问题。
我有一个文件说:
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上。谢谢。
答案 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);