【发布时间】:2018-07-10 22:15:23
【问题描述】:
我有一个 C# 应用程序,它需要识别给定的字符串是否是有效的 Windows 文件路径,该路径以带扩展名的文件名结尾。目前我有:
public static bool IsValidWindowsFilePathWithFileName(string filepath)
{
string scriptFilePathPattern = @"^[A-Za-z]:(\\\w+(\s*\w+)*)*(\\\w+(\s*\w+)*\.[a-zA-Z]\w*)$";
return Regex.IsMatch(filepath, scriptFilePathPattern);
}
这通常可以正常工作。但是,如果我输入以长字符串结尾的内容,例如
“C:\Windows\System32\ThisIsALongBadFileName”
处理需要几分钟时间。有没有更好的方法来做到这一点?
【问题讨论】:
-
stackoverflow.com/q/62771/62576 中的一种解决方案有什么问题,另外,Windows 文件名不需要以扩展名结尾。
-
提供什么是有效的,什么是无效的例子。说路径是错误的......没有提供足够的信息。
-
请停止使用字符串或正则表达式验证文件名。 That doesn't work。验证文件名的唯一方法是尝试创建它并查看它是否在运行时引发异常。
-
几 分钟?你在做什么?
-
你为什么不使用 File.Exists(string path)?