.NET,当 EnumerationOptions MatchType = MatchType.Win32 时搜索模式中“<”和“>”通配符的语法
.NET, Syntax for '<' and '>' wildcards in search pattern when EnumerationOptions MatchType = MatchType.Win32
Net-Core 和 Net 5+ 版本的 MatchType.Win32 .NET 文档说:
Match using Win32 DOS style matching semantics.
'*', '?', '<', '>', and '"' are all considered wildcards. Matches in a traditional DOS / Windows command prompt way.
https://docs.microsoft.com/en-us/dotnet/api/system.io.matchtype?view=net-6.0
如何使用“<”和“>”通配符的语法?我在任何地方都找不到,关于 DOS,我唯一能找到的是“*”和“?”通配符。我知道在 Windows Explorer 中你可以进行类似“date:>01/01/2021”的搜索,但它更像是一个运算符而不是通配符,如果将它与
一起使用会给出语法异常
var query = Directory.EnumerateDirectories(
basefolder,
"date:>01/01/2021",
new EnumerationOptions() { MatchType = MatchType.Win32 });
将常规旧“*”作为 searchPattern
传递仍然 returns 所有条目,尝试单独传递“<”或“>”,因为 searchPattern
没有在文件夹上产生任何结果我试过了。
处理 <
和 >
的逻辑记录在此处的内联注释中:https://github.com/dotnet/runtime/blob/c5c7967ddccc46c84c98c0e8c7e00c3009c65894/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemName.cs
具体来说:
// '<' (DOS_STAR) matches any character except '.' zero or more times.`
// If we are at a period, determine if we are allowed to consume it, i.e. make sure it is not the last one.
// '>' (DOS_QM) is the most complicated. If the name is finished,
// we can match zero characters. If this name is a '.', we don't match, but look at the next expression. Otherwise we match a single character.
这里只能使用两个通配符:* 和 ?
也许您可以考虑使用一些 Linq 表达式来过滤返回的集合?
我认为如果时区在您的代码中对您很重要,则更准确。
Net-Core 和 Net 5+ 版本的 MatchType.Win32 .NET 文档说:
Match using Win32 DOS style matching semantics.
'*', '?', '<', '>', and '"' are all considered wildcards. Matches in a traditional DOS / Windows command prompt way.
https://docs.microsoft.com/en-us/dotnet/api/system.io.matchtype?view=net-6.0
如何使用“<”和“>”通配符的语法?我在任何地方都找不到,关于 DOS,我唯一能找到的是“*”和“?”通配符。我知道在 Windows Explorer 中你可以进行类似“date:>01/01/2021”的搜索,但它更像是一个运算符而不是通配符,如果将它与
一起使用会给出语法异常var query = Directory.EnumerateDirectories(
basefolder,
"date:>01/01/2021",
new EnumerationOptions() { MatchType = MatchType.Win32 });
将常规旧“*”作为 searchPattern
传递仍然 returns 所有条目,尝试单独传递“<”或“>”,因为 searchPattern
没有在文件夹上产生任何结果我试过了。
处理 <
和 >
的逻辑记录在此处的内联注释中:https://github.com/dotnet/runtime/blob/c5c7967ddccc46c84c98c0e8c7e00c3009c65894/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemName.cs
具体来说:
// '<' (DOS_STAR) matches any character except '.' zero or more times.`
// If we are at a period, determine if we are allowed to consume it, i.e. make sure it is not the last one.
// '>' (DOS_QM) is the most complicated. If the name is finished, // we can match zero characters. If this name is a '.', we don't match, but look at the next expression. Otherwise we match a single character.
这里只能使用两个通配符:* 和 ?
也许您可以考虑使用一些 Linq 表达式来过滤返回的集合?
我认为如果时区在您的代码中对您很重要,则更准确。