搜索不带 .特点

Search a string without . character

我遇到了搜索文件问题。

我有一个文件说:

1346670589521421983450911196954093762922.nii

引用了以下文件:

1.3.46.670589.5.2.14.2198345091.1196954093.762922.dcm

不同的是有(.)放在不同的位置。 有人知道如何在没有句号 (.) 的情况下搜索文件吗? 因为我必须遍历 300 个目录,所有目录都具有不同的文件命名约定,所以我不能只使用子字符串来分解它们。谢谢大家的帮助。

干杯。

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

总而言之,我正在尝试使用此字符串 1346670589521421983450911196954093762922 来查看包含数百个 .dcm 的目录。看起来像 1.3.46.670589.5.2.14.2198345091.1196954093.762922.dcm。我如何根据 1346670589521421983450911196954093762922 字符串搜索它?此外,解决方案必须在 .net 3.5 上。谢谢。

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;

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

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

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);