C# 中的文件名匹配问题

2024-06-22

我之前发布过类似的内容,但它是关于处理命令提示符的。与另一个实例一样,我尝试在 ERP 系统中的备份之前进行一些自动文件清理,我对其执行维护,以平滑流程(因为我对其中 6 个系统至少执行两次维护)每一个月)。所以,这里有一些正在发生的事情的例子......

以下是目录中可能显示的三个文件名:

  • AP_AnalysisWrk.M4T
  • AP_AnalysisWrkMPM201408211313.M4T
  • AP_AnalysisWrkNG201408211313.M4T

在这三个中,后两个将是删除的候选者,而第一个需要保留。因此,最初我使用以下命令仅检索后两个:

String[] wrkFileList = Directory.GetFiles(directoryPath, "??_*Wrk??*????????????.M4T");

但是,由于某种原因,它总是返回所有三个,即使第一个与模式不匹配。在 Windows 资源管理器中使用此模式时,它仅根据需要返回后两个文件。我开发了一种使用正则表达式的解决方法,该方法有效:

Regex wrkFileMatch = new Regex("([A-z]{2}_[A-z0-9]+Wrk[A-Z0-9]{2,3}\\d{12}.(m4t|M4T))$");

不过,我对这种方法并不着迷,因为它添加了一个不必要的循环,因为我必须遍历所有结果才能获得正确的结果。就性能而言,这似乎并不那么重要,但我想了解为什么初始模式匹配无法仅返回正确的匹配项。是否有更好的方法使用 GetFiles 进行文件名过滤,或者我最好迭代目录结果并使用 RegEx 匹配来查找正确的文件(就像我目前正在做的那样)?


从文档中Directory.GetFiles Method (String, String) http://msdn.microsoft.com/en-us/library/wz42302f%28v=vs.110%29.aspx

searchPattern 可以是文字和通配符的组合,但不支持正则表达式。 searchPattern 中允许使用以下通配符说明符。

  • *(星号):该位置有零个或多个字符。
  • ?(问号):该位置有零个或一个字符。

鉴于,AP_AnalysisWrk.M4T确实匹配??_*Wrk??*????????????.M4T,因为所有这些??*????????????末尾的每个字符都可以匹配空字符串。

所以,你可以使用Directory.GetFiles()进行粗略的初始匹配,然后使用正则表达式更精确地过滤返回结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的文件名匹配问题 的相关文章

  • 求 a 范围内的 pow(a^b)modN

    对于给定的b and N以及一系列a say 0 n 我需要找到ans 0 n 1 where ans i 没有a s为此pow a b modN i 我在这里搜索的是可能的重复pow a b modN对于一系列a 以减少计算时间 例子 i
  • 您使用什么工具和技术来查找死代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您使用哪些工具和技术来查找 NET 中的死代码 过去 我用 Obsolete 属性修饰方法 传递 tr
  • 如何将 CroppedBitmap 转换为 BitmapImage

    我正在尝试将 CroppedBitmap 转换为 BitmapImage 编辑 不使用内存流 我尝试过直接转换它 似乎这不是一个选择 这应该没那么难 我正在尝试剪切 BitmapImage 的一部分 并创建一个仅包含新裁剪的 Bitmap
  • [Python]比较两个 zip 文件的函数,一个位于 FTP 目录中,另一个位于我的本地计算机上

    我在创建比较两个 zip 文件的函数时遇到问题 如果它们相同 而不仅仅是名称相同 这是我的代码示例 def validate zip files self host 192 168 0 1 port 2323 username 123 pa
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 如何从用户提供的包含正则表达式元字符的字符串创建正则表达式?

    我需要使用创建正则表达式regexcrate 包含一个作为命令行参数传递给程序的字符串 命令行参数可以包含 and 如果我将字符串硬编码为r 那么它工作正常 但是如果我使用命令行参数作为format r arg str 我收到以下错误 假设
  • 测试从 ComboBox 派生的自定义控件

    我创建了一个从 ComboBox 派生的控件 并希望对其行为进行单元测试 但是 它在我的单元测试中的行为似乎与实际应用程序中的行为不同 在实际应用程序中 Combobox DataSource 属性和 Items 同步 换句话说 当我更改
  • VBA 6:正则表达式无法识别复杂的字符串

    我有这个字符串 1X214X942 0SX 其中每个 X 代表一个 不间断空格 准确地说是空白 ASCII 代码为 160 S 代表一个空格字符 我试图用这个正则表达式来识别它 d 1 3 s d 3 s d 3 d 1 3 d 1 3 d
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • 如何在Windows Azure上调用ffmpeg.exe转换音频文件?

    我在 Windows Azure 上运行 Web 角色来接收 AAC 音频文件 通过 base64 字符串上传 并将它们存储到 blob 中 现在效果很好 接下来 我还必须将它们转换为 MP3 并将 MP3 存储到 blob 中 我决定使用
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 将 R 值传递给采用 L 值的函数时出现过载歧义

    我有 2 个重载函数 一个采用 L 值 另一个采用 R 值 目的是让该函数可以像这样调用 Obj obj foo obj OR foo Obj 所以 我写了2个重载函数 template
  • 预览MouseMove 与 MouseMove

    我有相当多的 XAML 经验 但最近我注意到我的大多数同事都使用预览鼠标移动代替鼠标移动事件 我一直用鼠标移动它对我很有帮助 但我忍不住问我什么时候应该使用预览鼠标移动什么时候鼠标移动 有什么区别 各自有什么优点和缺点等等 PreviewM
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • Unity 错误“内部构建系统错误。后端退出,代码为 -1073740791。”摧毁/杀死了我的项目

    好吧 我可能在这里夸大了 但这是真的 当我开始打开它时 该项目由于错误 内部构建系统错误 后端退出 代码为 1073740791 而被破坏 应用程序 这个项目已经在Google Play上发布了 也许和设置有关 有人可以帮忙吗 完整错误 I
  • Json.net 将数字属性序列化为字符串

    我正在使用 JsonConvert SerializeObject 序列化模型对象 服务器期望所有字段都是字符串 我的模型对象具有数字属性和字符串属性 我无法向模型对象添加属性 有没有办法将所有属性值序列化为字符串 我必须只支持序列化 而不

随机推荐

  • 如何强制Excel在列中自动填充上一年而不是当前年份?

    Context 我正在将上一年的数据输入 Excel 中 每次我在日期栏中输入日期 9 16 表示 9 月 16 日 Excel 自动将其格式设置为 9 16 12 其中 12 是 2012 年 即当前年份 我正在 2012 年输入去年的数
  • AWS cloudfront添加自定义标头而不使用Lambda@Edge

    我想补充一下x 框架选项 as 同源 to AWS 云锋为我的应用程序提供服务的服务S3 bucket 我不想添加新的Lambda编辑请求头的函数 实际上我在附件下找到了一个地方 CloudFront 分配 gt 我的分配设置 gt 来源和
  • 在 iPhone 应用程序中使用 Google Reader API 和 OAuth

    我想制作一个在 Google Reader API 上使用的应用程序 但我发现它没有官方 API 使用非官方 API 是否存在应用商店指南 批准方面的问题 其他应用程序 Reeder 等 会使用这个吗 另外 登录的最佳方法是什么 OAuth
  • 无法将 matplotlib 导入 Python 3

    我正在尝试自学编程 但在下载基本教程所需的模块时不断遇到问题 我最近的尝试是获得matplotlib模块到我的 Python 3 环境中 我尝试了很多不同的安装包以及在互联网上找到的很多建议 但我不记得最初是如何获得该模块的 但安装过程似乎
  • 使用指针循环数组

    以下 C 程序打印的输出比我预期的要多 谁能解释为什么会发生这种情况 该程序尝试使用指针循环遍历整数数组 并沿途打印每个值 include
  • 我可以从注册表本地设置扩展策略吗?

    我有一个 Chrome 扩展程序 并添加了 Managed schema 来定义属性 SomeSetting 以便我可以通过策略进行设置 manifest json storage managed schema schema json sc
  • Python:按数字对列表进行排序

    我有一个清单x y我需要根据坐标进行排序x坐标 则y协调时x是相同的并消除相同坐标的重复项 例如 如果列表是 450 0 486 6 500 0 400 0 450 0 313 3 350 0 313 3 300 0 400 0 349 9
  • 如何在 Laravel 5.4 中验证文件名

    我有一个包含三个输入字段的表单 我想在处理输入值之前验证它们 我想在处理文件名之前验证文件名 我使用正则表达式和 alpha dash 但我收到有效文件名错误 我希望我的文件名仅包含小写字母 数字 下划线和破折号 如何检查我的文件的文件名有
  • 在 Windows 10 家庭版上运行性能配置文件

    我正在尝试在 Windows 10 上运行 IIS Express 的 Visual Studio 2017 探查器 但我遇到了一些麻烦 当我尝试安装所有必需的 IIS 组件时 我注意到我缺少一些组件 因为我运行的是 Windows 10
  • Rails button_to:如何指定控制器?

    我不明白这里发生了什么事 我想放一个button to在我 哈姆 看来 如果我这样做 button to New action gt new 生成的页面有
  • 处理算法中的问题/错误的推荐方法

    将堆栈跟踪排除在外 可以说 错误 的想法是一个您不希望发生但确实发生的问题 如果我使用布尔系统来检查操作是否成功完成 它将如下所示 String array new String 10 int i 0 public boolean acce
  • 为什么 LambdaExpression.Compile() 在 iOS (Xamarin) 上工作?

    由于 Xamarin iOS 不支持在运行时生成代码 为什么 Compile 和 DynamicInvoke 按预期工作 例如 以下代码可以正常工作 var lambda Expression Lambda Expression Add E
  • VB6 HTTP 请求到 VB.Net 2.0 的转换

    我正在尝试将旧版 VB6 组件 不是我编写的 更新到 NET 平台 有一个函数可以将 XML 字符串发送到 URL Function PostToUrl ByRef psUrl ByRef psData Byref psResponseTe
  • 如何获取 cql 查询的墓碑计数?

    我正在尝试评估在我们的应用程序的一个表中创建的墓碑数量 为此 我尝试使用nodetool cfstats 我是这样做的 create table demo test a int b int c int primary key a inser
  • 如何在 Swift 中模拟 UIApplication?

    我目前正在使用 Quick Nimble 进行 Swift 单元测试 我正在建立一个Inviter通过不同方法发送应用程序邀请的类 我需要模拟 UIApplication 来验证我的代码调用openURL 到目前为止我的代码 import
  • PHP MySQL - 选择所有到期日期 = 今天的日期 + 7 天

    我正在使用 PHPMyadmin 并使用 PHP 将值放入数据库中 我使用时间戳存储产品的到期日期 如下所示 例如 2012 11 04 我想选择所有到期日期等于今天日期加 8 天的日期 例如上面的那个 我还想在单独的页面中选择所有到期日期
  • MySQL将unicode字符与ascii版本匹配

    我正在运行 MySQL 5 1 50 并且有一个如下所示的表 organizations CREATE TABLE organizations id int 11 NOT NULL AUTO INCREMENT name text CHAR
  • 无法在 ARKit 中旋转 SCNNode

    我试图在 y 轴上旋转 SCNNode 以便我的节点 箭头 指向正确的方向 我想制作一个使用 ARKit 的导航应用程序 每个箭头都需要指向我收到的路线的下一个位置 路线检索工作正常 这些节点将添加到场景的 rootNode 中 在某些时候
  • 我可以使用Hyperledger Fabric v1.0中MSP生成的公钥/私钥来加密/解密数据吗?

    在Hyperledger Fabric v1 0中 用户可以通过MSP 成员服务提供商 在区块链网络中注册并注册 注册和登记后 用户将获得一个公钥 在证书中 和一个私钥 按照我的理解 私钥由调用者使用来签署交易 而公钥由对等方用来验证签名者
  • C# 中的文件名匹配问题

    我之前发布过类似的内容 但它是关于处理命令提示符的 与另一个实例一样 我尝试在 ERP 系统中的备份之前进行一些自动文件清理 我对其执行维护 以平滑流程 因为我对其中 6 个系统至少执行两次维护 每一个月 所以 这里有一些正在发生的事情的例