C# 某些方法中的任何字符串,例如File.Exist()

C# 某些方法中的任何字符串,例如File.Exist(),c#,regex,C#,Regex,如何在File.Exist方法中放置包含一些数字的文件名?例如“file1.abc”、“file2.abc”、“file3.abc”等,但不使用Regex?你的意思是 for (int i = 1; i < 4; i++) { string fileName = "file" + i.ToString() + ".abc"; if (File.Exists(fileName)) { // ... } } for(int i=1;i(!str

如何在File.Exist方法中放置包含一些数字的文件名?例如“file1.abc”、“file2.abc”、“file3.abc”等,但不使用Regex?

你的意思是

for (int i = 1; i < 4; i++)
{
    string fileName = "file" + i.ToString() + ".abc";
    if (File.Exists(fileName))
    {
        // ...
    }
}
for(int i=1;i<4;i++)
{
string fileName=“file”+i.ToString()+“.abc”;
if(File.Exists(fileName))
{
// ...
}
}

您是否试图确定各种文件是否与模式匹配
fileN.abc
其中
N
是任意数字?因为
File.Exists
无法执行此操作。改为使用获取与特定模式匹配的文件列表

new DirectoryInfo(dir).EnumerateFiles("file*.abc").Any();


在unix世界中,它被称为globbing。也许你能找到一个.NET的图书馆?作为一个起点,请查看这篇文章:

下面是代码快照,它将返回名称前缀为“file”的所有文件以及格式类似于“fileN.abc”的任何数字,即使它不会返回文件名为“file.abc”或“fileX.abc”等

List str=
目录.EnumerateFiles(Server.MapPath(“~/”,“file*.abc”)
.Where((文件=>(!string.IsNullOrWhiteSpace(
Path.GetFileNameWithoutExtension(文件).Substring(
Path.GetFileNameWithoutExtension(file.IndexOf)(
“文件“+”文件“.Length”))
&&  
(int.TryParse(Path.GetFileNameWithoutExtension(file).Substring(
Path.GetFileNameWithoutExtension(file.IndexOf(“file”)+“file.Length”),
输出结果)==true))。ToList();

希望这将非常有帮助,谢谢您的时间。

您的问题不清楚
File.Exists(“file1.abc”)
完全有效。你想达到什么目的?可能重复我试图使通用方法像File.Exist(filename+“*.abc”)一样存在,但“*”不存在work@Daniel当前位置我想他的意思是“file?.abc”或“file*.abc”。我想他的意思是一个file.exist方法,可以处理通配符枚举文件()方法仅存在于框架的版本4中。对于早期版本,将返回整个文件列表,然后可以检查这些文件是否匹配。(尽管这可能会返回到OP希望避免的正则表达式问题。)我之所以使用Directory.GetFiles是因为我使用了VS2008,但感谢Matthew注意到早期名称映射到特定数字。@ThatBlairGuy:有一个接受搜索模式的重载。什么是“代码快照”"? 你是说片段?这也是一个相当沉重的表达。与公认的答案相比,您认为这有什么优势?实际上,我的意思是“代码捕捉”到“代码块”,我给定的代码正在100%执行和工作,而且在公认的答案下,它允许file.abc文件,这是不需要的(给定的文件格式是fileN.abc),但我的代码不允许file.abc,它只允许fileN.abc,其中N是一个数字。您好@vidstige,尽管我的答案是正确的,但我可以知道为什么您否决了我吗?这是一个很晚才回答这个问题的答案,当这个问题有更简单的解决方案时,表达式非常长且复杂。@vidstige,我回答了,因为公认的答案是错误的!另外,我的答案一点也不完整,因为过滤条件有点长,但工作正常,请您检查您的投票。谢谢你抽出时间。
Directory.EnumerateFiles(dir, "file*.abc").Any();
List<string> str = 
    Directory.EnumerateFiles(Server.MapPath("~/"), "file*.abc")
      .Where((file => (!string.IsNullOrWhiteSpace( 
             Path.GetFileNameWithoutExtension(file).Substring( 
             Path.GetFileNameWithoutExtension(file).IndexOf(
              "file") + "file".Length))) 
            &&  
            (int.TryParse(Path.GetFileNameWithoutExtension(file).Substring( 
                Path.GetFileNameWithoutExtension(file).IndexOf("file") + "file".Length), 
                out result) == true))).ToList();