C#检查字符串是否有特定的数字长度

时间:2017-07-28 10:30:34

标签: c#

我可以搜索并返回给定文件位置的文件。我还能够从文件名中返回一个数字序列:

   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

如何修改我的方法来实现这一目标?

2 个答案:

答案 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}");