Изменить строку в строке [] files = File.ReadAllLines (csspath); - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь изменить строку в массиве , созданном из функции File.ReadAllLines(csspath).

. Я пытаюсь использовать Regex.Replace и назначитьвыведите в string (в данном случае file), с которым я работаю.в функции я получаю массив и строку, которую я хочу изменить.

Проблема 1016 * заключается в том, что когда я использую file.Replace(file, outp);, мне нужно сохранить новый массив, и яне думаю, что я знаю, как подойти к этому.как мне подойти к этому решению?

Я также думаю использовать функцию Regex.Match, но я получаю здесь совпадение, а не замену.

private static void MyFunction(string[] files,string changeto)
{
    var outp = "";

    foreach (var file in files)
    {
        if (file.Contains("font-family"))
        {
            //var match = Regex.Match(file, "'.*';");

            outp = Regex.Replace(file, "'.*';", changeto);

            file.Replace(file, outp);
        }
    }
}

1 Ответ

0 голосов
/ 30 мая 2018

Я предлагаю изменение дизайна : пусть метод возвращает изменения (вместо void):

private static IEnumerable<string> MyFuction(IEnumerable<string> lines, string changeTo) {
  return lines
    .Select(line => Regex.Replace(line, "'.*';", changeTo)); 
}

Так что вы можете использовать его следующим образом:

// 1. Read lines from the file
// 2. Make required changes
// 3. Organize the final result as an array
string[] data = MyFuction(File.ReadLines(csspath))
  .ToArray();

Или вы даже можете избавиться от метода вообще и иметь читаемый код:

string[] data = File
  .ReadLines(csspath)                                     // read file
  .Select(line => Regex.Replace(line, "'.*';", changeTo)) // make changes
  .ToArray();                                             // materialize as an array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...