首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过字符串搜索目录中的文件,如果找到,则添加到字典

通过字符串搜索目录中的文件,如果找到,则添加到字典
EN

Stack Overflow用户
提问于 2019-04-06 07:26:44
回答 1查看 104关注 0票数 1

好的,我想做的是循环遍历一个有多个文件名的文件夹,我想搜索多个字符串,如果找到了,就添加一个键和值到字典中,因为我需要文件夹中的所有文件都像这样存储

ads_fire在文件名中查找文件名中包含ads_fire的文本,一旦找到就会存储该文件名

因此,一旦找到,就想被添加到像animnames.add(ads_fire,adsfire)这样的字典中

下面的代码可以工作,但只能在一个文件名上工作,我有大约20个这样的文件名,我必须这样做,并需要使键匹配的值

代码语言:javascript
复制
string partialName = "ads_fire";
DirectoryInfo hdDirectoryInWhichToSearch = new DirectoryInfo(testdir);
FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles("*" + partialName + "*.*");

foreach (FileInfo foundFile in filesInDir)
{
    string fullName = foundFile.Name;
    animnames.Add("ads_fire", fullName);

    richTextBox1.Text = animnames["ads_fire"];
}

这是我想要的结果,但我希望它适用于所有的动物,而不仅仅是ads_fire one result of code sniplet

EN

回答 1

Stack Overflow用户

发布于 2019-04-06 08:49:09

如果我没记错的话,您在testdir文件夹中有一系列"*.xanim_bin"格式的文件,并且只要文件名包含一系列预定义的键中的一个,您就想为所有这些文件创建一个字典。

首先,您必须定义所需的keys

代码语言:javascript
复制
string[] keys = new[]
{
    "ads_down",
    "ads_fire",
    "ads_up",
    "crawl_forward",
    // etc, you must enter these
};

然后你可以像这样制作你的字典:

代码语言:javascript
复制
Dictionary<string, string> animnames =
    Directory
        .EnumerateFiles(testdir, "*.xanim_bin")
        .Select(fullname => new System.IO.FileInfo(fullname))
        .Select(fileinfo => new
        {
            fileinfo,
            key = keys.FirstOrDefault(k => fileinfo.Name.Contains(k))
        })
        .Where(x => x.key != null)
        .ToDictionary(x => x.key, x => x.fileinfo.Name);

然后你可以像这样填充你的RichTextBox

代码语言:javascript
复制
richTextBox1.Text =
    String.Join(
        Environment.NewLine,
        animnames.Select(x => x.Value).OrderBy(x => x));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55544498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档