Member 13650651 Ответов: 2

Как я могу найти номер по имени и поместить его в путь к файлу


Привет. У меня есть проект, и он требует, чтобы я искал номер по имени и помещал его в свой путь к файлу. Например:

Имя LU610364G02

а путь к файлу должен быть: ..\Reports\2016\10\LU610364\

где 2016-3-е число из LU610364G02, 10-4-е и 5-е числа, а LU610364-первые 8 чисел.

Как мне найти значения и поместить их в путь к файлу?
Я использую Microsoft Visual Studio, c#.
Заранее благодарю вас за помощь

Что я уже пробовал:

Попробовал использовать регулярное выражение в качестве выражения, чтобы сопоставить имя с путем к файлу.

<pre lang="c#"> string Timestamp = string.Empty;
            using (var file = System.IO.File.OpenText(datFile))
            {
                //regexs = regular expressions
                //compile regexs
                //Regex nodeRegex = new Regex("NODE      :(.*)");
                //Regex testModeRegex = new Regex("TEST MODE:(.*)");
                //Regex timestampRegex = new Regex("Timestamp:(.*)");

                Regex nodeRegex = new Regex("NODE      :(.*)", RegexOptions.IgnoreCase);
                Regex testModeRegex = new Regex("\bTest Mode\b", RegexOptions.IgnoreCase);
                Regex program = new Regex("\bPROGRAM\b", RegexOptions.IgnoreCase);
                Regex TimeStamp = new Regex("\bTIMESTAMP\b", RegexOptions.IgnoreCase);

                while (!file.EndOfStream)
                {
                    String line = file.ReadLine();

                    // check name
                    Match m = nodeRegex.Match(line);


                    //string line = "TUI Test Mode: B31P";
                    string match = string.Format(@"\b{0}\b", FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexTestMode);
                    bool matchTestMode = Regex.IsMatch(line, match, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                    Match matchTest = Regex.Match(line, FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexTestMode);
                    Match matchProgram = Regex.Match(line, FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexPROGRAM);
                    Match matchTimestamp = Regex.Match(line, FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexTimestamp);


                    if (matchTest.Success)
                    {
                        int startIndex = matchTest.Index + FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexTestMode.Length + 1;
                        int endIndex = line.IndexOf(' ', startIndex + 1);

                        TestMode = line.Substring(startIndex, endIndex - startIndex).Trim();
                        //break;
                    }

                    if (matchProgram.Success)
                    {
                        int startIndex = matchProgram.Index + FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexTestMode.Length + 1;
                        int endIndex = line.IndexOf(' ', startIndex + 1);

                        strProgram = line.Substring(startIndex, endIndex - startIndex).Trim();
                        //break;
                    }

                    if (matchTimestamp.Success)
                    {
                        int startIndex = matchTimestamp.Index + FAR_Yield_Analysis_Test_Tool.Properties.Settings.Default.RegexTimestamp.Length + 1;
                        int endIndex = line.IndexOf(' ', startIndex + 1);

                        strTimestamp = line.Substring(startIndex, endIndex - startIndex).Trim();
                        //break;

PIEBALDconsult

Регулярное выражение заменить? Не могу попробовать прямо сейчас, но это должно быть довольно легко.

Patrice T

и у вас есть какой-то код ?

2 Ответов

Рейтинг:
15

PIEBALDconsult

string nam = "LU610364G02" ;
string pth = System.Text.RegularExpressions.Regex.Replace ( nam , @"^(..(.)(..)...).*$" , @"..\Reports\201$2\$3\$1\" ) ;


Member 13650651

большое вам спасибо!

Рейтинг:
11

Karthik_Mahalingam

пробовать

string name = "LU610364G02";
       if (name.Length > 8) {
           string thirdChar = name.Substring(2, 1);
           string year = "201" + thirdChar;

           string fourAndfifth = name.Substring(3, 2);
           string month = fourAndfifth;

           string first8Chars = name.Substring(0, 8);

           string path = string.Format(@"..\Reports\{0}\{1}\{2}\", year, month, first8Chars); //..\Reports\2016\10\LU610364\

       }


Member 13650651

Большое вам спасибо!

Karthik_Mahalingam

добро пожаловать