代码之家  ›  专栏  ›  技术社区  ›  Ahmad

使用ReGEX还是简单的文件来查找文件会更好吗?

  •  1
  • Ahmad  · 技术社区  · 14 年前

    我需要检查一个目录中是否存在一个文件。我想到的两个选项是使用regex( vbscript.regexp )以确定文件是否存在。另一种选择是使用 FileSystemObject FileExists 方法。

    使用regex的缺点是,我需要遍历目录中的每个文件,并根据每个文件名测试regex。其次,regex方法在将来可能更难维护(regex)。但是,我需要测试两个regex,因为同一个文件可能有不同的版本。对于其中一个文件,文件名中有一个描述部分经常更改(好吧,这是个谎言——它在某个随机循环中更改),因此使用regex将有助于匹配文件,而不管这个部分是不是更健壮的代码。

    使用 否存在 ,我可以同时测试两个文件,并且根据每次检查返回的布尔值,可以继续处理。使用的相关缺点 否存在 是不支持通配符匹配,所以在考虑带有描述的文件名时,始终需要更新此项以反映新的描述=更多的维护问题。然而,它更容易掌握和改变。

    文件名格式:

    Data_Sheet_<yyyymmdd>_D.xlsx // the normal file
    Data_Sheet_<yyyymmdd>_D_<some description>.xlsx // the alternate file
    

    这个 <yyyymmdd> 文件名的一部分将由文件所在的当前文件夹决定。

    问题:使用ReGEX还是简单的文件来查找文件会更好吗?

    我将在Excel vba宏中使用上述任一方法。

    1 回复  |  直到 6 年前
        1
  •  2
  •   pinkfloydx33    14 年前

    你看过吗 Dir() ? 你可以像这样传递通配符 my*file.pd? 也许这是一种妥协的方式。当然,你不会得到正则表达式的全部功能,但是你可以限制文件,然后实际测试看看存在什么。

    我个人会用 FileExists() 而不是在一个目录上循环并测试每个文件。如果目录比你的循环要大的话。但是如果你用 目录() 您可能会限制需要迭代的文件数。加 文件存在() 完全是一行/语句并且更干净。。。但是,您必须确保脚本运行时包含在您的项目中

    http://techonthenet.com/excel/formulas/dir.php http://www.blueclaw-db.com/listbox-directory.htm http://www.hobbub.com/vba-vb-vsto/iterating-over-a-directory-with-a-dir-loop-loop-through-directory-vb/

    第二和第三个链接有更好的遍历目录的例子。