Пример Regex expression например замены _Fld.... из полей 1с8

C Sharp > Пример Regex expression например замены _Fld.... из полей 1с8
16.01.2018 17:56:18


Наиболее часто встречающиеся слова в статье:

[new_field] [MasString] [obr_str] [path_out] [foreach] [new_field2] [fld_new] [expression] [Identifier] [results]


Статья:

public void SetInFiles(string[] MasString, string path_out)
        {
 
            File.Delete(path_out);
            int i = 0;
            string[] readText=new string[MasString.Length]; // инициализируем массив для  обработки с длиной равной  входящему MasString
            //обработаем массив и запишем в него
            foreach (var x in MasString)
            {
                string obr_str = x;
                string new_field = "";
                string new_field2 = "";
                int fld_new = 0;
                //получим field------------------------------------------------
                Regex expression = new Regex(@"\[_Fld(?<Identifier>[0-9]*)");
                var results = expression.Matches(obr_str);
                foreach (Match match in results)
                 {
                    new_field = match.Groups["Identifier"].Value;
                    fld_new = Convert.ToInt32(new_field) + PlusCount;
                    new_field = Convert.ToString(fld_new);
                 }
                Regex expression2 = new Regex(@"\[_Fld(?<Identifier>[0-9]*RRef)\]"); // тут справочник  со ссылкой  проанализируем есть ли в строке RRef
                var results2 = expression2.Matches(obr_str);
                foreach (Match match in results2)
                { new_field2 = match.Groups["Identifier"].Value; }
                    //--------------------------------------------------------------
                    //замена строки по патерну
                string pattern = @"\[_Fld\S*\]";
                if (new_field2.Length > 2)
                    new_field = new_field + "RRef";
                string replacement = "[_Fld"+new_field+"]";          
                Regex rgx = new Regex(pattern);
                string result = rgx.Replace(obr_str, replacement);
                readText[i] = result;
                i += 1;
            }
            //запись в файл массив строк
            File.WriteAllLines(path_out, readText, Encoding.UTF8);
            MessageBox.Show("Готово....");
 
        }