0

目前我正在尝试使用 C# (C sharp) 来做一个遍历的意思。我有一个文件名,它分为 3 个元素,例如 monster3456 测试。Monster 是一个名称,数字是唯一的集合,而 test 是真正代表测试人员的代码。无论如何,我已经设置了一个文件夹结构,从

Alpha 级别,因此每个字母 A、B、C、D、....M 然后分解为名称,其中 Monster 3456 将是 M 分解中的名称,然后在 Monster 文件夹中,我有 3 个子文件夹,称为 Tester、Maker 和生成器。

我想动态地让文件名 monster3456 测试,映射到具有 M - alpha 的文件夹,然后是名称 monster 3456,然后映射到子文件夹 Tester。会有不同的实例,不同的文件具有不同的代码,需要转到 3 个子文件夹之一。我是编程新手,正在寻求帮助。

4

1 回答 1

0

我希望我理解正确 - 希望这会让你开始。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;

namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {

            string basePath = "c:\\temp";

            List<string> filenames = new List<string>();
            filenames.Add("monster3456 test");
            filenames.Add("ketchup1234 make");
            filenames.Add("oranges5555 build");

            foreach (string filename in filenames)
            {
                Match match = Regex.Match(filename, @"([a-z]+)([0-9]+)[^\S]{1,}(\w+)", RegexOptions.IgnoreCase);

                if (match.Success)
                {
                    string alpha = match.Groups[1].Value.Substring(0, 1);
                    string alphaString = match.Groups[1].Value;
                    string uniqueSet = match.Groups[2].Value;
                    string instance = match.Groups[3].Value;
                    string finalInstance = String.Empty;
                    string path = String.Empty;

                    switch (instance.ToLower())
                    {
                        case "test":
                            finalInstance = "Tester";
                            break;
                        case "make":
                            finalInstance = "Maker";
                            break;
                        case "build":
                            finalInstance = "Builder";
                            break;
                        default:
                            break;
                    }

                    if (!String.IsNullOrEmpty(finalInstance))
                    {
                        path = basePath + "\\" + alpha + "\\" + alphaString + uniqueSet + "\\" + finalInstance;
                        Console.WriteLine(path);
                        /* Console.WriteLine("alpha: " + alpha);
                        Console.WriteLine("alphaString: " + alphaString);
                        Console.WriteLine("uniqueSet: " + uniqueSet);
                        Console.WriteLine("finalInstance: " + finalInstance); */
                    }
                }
            }
            Console.Read();
        }
    }
}

输出

c:\temp\m\monster3456\Tester
c:\temp\k\ketchup1234\Maker
c:\temp\o\oranges5555\Builder
于 2012-07-17T17:59:57.523 回答