特定数量字符的 C# 通配符
C# Wildcard for specific amount of characters
我想 select 所有在星号所在的位置 确切 4 "unknown" 个字符的文档:(例如“** **”可能是“2018”)
foreach (string s in Directory.GetFiles(@"C:\Users\MyUser\Documents\ExampleTitle ****.xml").Select(Path.GetFileName))
{
// Do something!
}
我知道星号 * 将匹配每个字符,无论星号之间有多少个字符。但正如所描述的,我希望 select 仅具有特定数量的未知字符的结果。
您不能在路径参数中指定通配符,您需要提供路径和搜索模式,参见GetFiles(String, String)
。
搜索模式接受两个通配符,?
用于单个字符,*
用于任意数量的字符。因此,你需要
Directory.GetFiles(@"C:\Users\MyUser\Documents", "ExampleTitle ????.xml")
如果您打算只匹配数字,则必须使用正则表达式来过滤 Directory.GetFiles
:
的结果
var fileList = Directory.GetFiles(@"C:\Users\MyUser\Documents", "*.xml")
.Where(p => Regex.IsMatch(Path.GetFileName(p), @"^ExampleTitle [0-9]{4}\.xml$"))
.ToList();
此处,Directory.GetFiles(@"C:\Users\MyUser\Documents", "*.xml")
将获取给定文件夹中的所有 XML 文件,那些完全匹配 ExampleTitle <4-DIGITS>.xml
模式的文件将通过 Where
子句返回.
我想 select 所有在星号所在的位置 确切 4 "unknown" 个字符的文档:(例如“** **”可能是“2018”)
foreach (string s in Directory.GetFiles(@"C:\Users\MyUser\Documents\ExampleTitle ****.xml").Select(Path.GetFileName))
{
// Do something!
}
我知道星号 * 将匹配每个字符,无论星号之间有多少个字符。但正如所描述的,我希望 select 仅具有特定数量的未知字符的结果。
您不能在路径参数中指定通配符,您需要提供路径和搜索模式,参见GetFiles(String, String)
。
搜索模式接受两个通配符,?
用于单个字符,*
用于任意数量的字符。因此,你需要
Directory.GetFiles(@"C:\Users\MyUser\Documents", "ExampleTitle ????.xml")
如果您打算只匹配数字,则必须使用正则表达式来过滤 Directory.GetFiles
:
var fileList = Directory.GetFiles(@"C:\Users\MyUser\Documents", "*.xml")
.Where(p => Regex.IsMatch(Path.GetFileName(p), @"^ExampleTitle [0-9]{4}\.xml$"))
.ToList();
此处,Directory.GetFiles(@"C:\Users\MyUser\Documents", "*.xml")
将获取给定文件夹中的所有 XML 文件,那些完全匹配 ExampleTitle <4-DIGITS>.xml
模式的文件将通过 Where
子句返回.