我可以搜索并返回给定文件位置的文件。我还能够从文件名中返回一个数字序列:
public List<AvailableFile> GetAvailableFiles(string rootFolder)
{
List<AvailableFile> files = new List<AvailableFile>();
if (Directory.Exists(rootFolder))
{
Log.Info("Checking folder: " + rootFolder + " for files");
try
{
foreach (string f in Directory.GetFiles(rootFolder))
{
files = FileUpload.CreateFileList(f);
var getNumbers = new String(f.Where(Char.IsDigit).ToArray());
System.Diagnostics.Debug.WriteLine(getNumbers);
}
}
catch (System.Exception excpt)
{
Log.Fatal("GetAvailableFiles failed: " + excpt.Message);
}
}
return files;
}
我现在要做的只是返回一个长度恰好为8个字符的数字序列。例如,名称为New File1 12345678 123
的文件我只关心获取12345678
。
如何修改我的方法来实现这一目标?
答案 0 :(得分:2)
正则表达式似乎对此有好处:
var r = new Regex(".*(\\d{8})");
foreach (string f in Directory.GetFiles(rootFolder))
{
files = FileUpload.CreateFileList(f);
var match = r.Match(f);
if(m.Success)
{
Console.WriteLine(m.Groups[1]); // be aware that index zero contains the entire matched string
}
}
正则表达式将匹配第一个出现的8位数字并将其放入GroupsCollection
。
答案 1 :(得分:1)
您可以使用正则表达式:
var match = Regex.Match(input, @"\d{8}");