Member 11579819 Ответов: 4

Как полностью заменить определенную текстовую строку, которая начинается с определенного слова


У меня есть текстовый файл. Мое требование состоит в том, чтобы полностью заменить конкретную строку входным сигналом. Моя проблема в том, что только половина этой линии постоянна, а оставшаяся половина может быть чем угодно.



До сих пор я пробовал следующее

static void Main(string[] args)
        {
            //1.Copy the file from one location to another location
            string sourcePath = @"D:\\SQLConfigurationFile\\ConfigurationFile.ini";
            string destinationPath = @"C:\\Temporary\\ConfigurationFile.ini";
            File.Copy(sourcePath, destinationPath);
            //--End 1--//
                        
            string productKey = "Ali";
            string userName = "Mujtaba";

            string filePath = @"C:\\Temporary\\ConfigurationFile.ini";
            var text = new StringBuilder();
            var text2 = new StringBuilder();

            foreach (string s in File.ReadAllLines(filePath))
            {
                text.AppendLine(s.Replace("PID=ProductKey", "PID=" + "\"" + productKey + "\""));
            }

            using (var file = new StreamWriter(File.Create(filePath)))
            {
                file.Write(text.ToString());
            }

            foreach (string s in File.ReadAllLines(filePath))
            {
                text2.AppendLine(s.Replace("SQLSYSADMINACCOUNTS=User", "SQLSYSADMINACCOUNTS=" + "\"" + userName + "\""));
            }

            using (var file = new StreamWriter(File.Create(filePath)))
            {                
                file.Write(text2.ToString());
            }
            

        }


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

Например:
"ПИД=Ключ_продукта"

Здесь PID постоянен, а ProductKey может быть чем угодно. На данный момент я жестко закодировал ProductKey и попробовал следующий код, который работает.
Но когда ProductKey изменится, мой код не будет работать.

Пожалуйста, Помогите!!

Anisuzzaman Sumon

Имеет ли ваш ключ продукта постоянную длину ? Дайте свой шаблон ключа продукта и какой символ заканчивается на вашем "PID=ProductKey".Дайте некоторые реальные данные "s", чтобы мы могли выяснить и помочь вам.

Member 11579819

Формат ключа продукта: 27HMJ-GH7P9-X2TTB-WPHQC-RG79R

Anisuzzaman Sumon

хорошо тогда подождите :)

Member 11579819

хорошо...спасибо

Member 11579819

это также может быть похоже на замену всей строки, которая начинается с PID...

Member 11579819

Можно ли выполнить поиск по номеру строки, а затем заменить эту конкретную строку.
На самом деле мой TL попросил меня использовать эту логику.

4 Ответов

Рейтинг:
33

Maciej Los

Я бы предложил начать здесь: База Знаний Проекта Кодекса [^]

Например, вам нужно использовать ini reader/parser/writer:
ini-файл[^]
Обработчик Ini[^]
Упрощенная обработка INI[^]


Рейтинг:
28

Patrice T

Вы должны узнать о регулярных выражениях (RegEx)

Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]


Рейтинг:
12

Member 11579819

Наконец-То Сделано..

string filePath = @"C:\\Temporary\\ConfigurationFile.ini";
            
            string[] arrLine = File.ReadAllLines(filePath);
            for (int i = 0; i < arrLine.Count(); i++)
            {
                if (arrLine[i].Contains("PID"))
                {
                    arrLine[i] = "PID=" + "\"" + productKey + "\"";
                }
                if (arrLine[i].Contains("SQLSYSADMINACCOUNTS"))
                {
                    arrLine[i] = "SQLSYSADMINACCOUNTS=" + "\"" + userName + "\"";
                }
            }
            File.WriteAllLines(filePath, arrLine);


Рейтинг:
11

Anisuzzaman Sumon

вот ваше полное решение

string s = "Hello Anis PID=27HMJ-GH7P9-X2TTB-WPHQC-RG79R is a pattern";

           s = Regex.Replace(s, @"(P)(I)(D)(=)[A-Z0-9]{5}(-)[A-Z0-9]{5}(-)[A-Z0-9]{5}(-)[A-Z0-9]{5}(-)[A-Z0-9]{5}","[Your replacement String]", RegexOptions.IgnoreCase);



Из положить будет "Привет" Анис "[замена строки] - это закономерность", соответствующие всем
шаблон типа (PID=27HMJ-GH7P9-X2TTB-WPHQC-RG79R)

счастливое кодирование :)