更改字符串[] files = File.ReadAllLines(csspath);

时间:2018-05-30 13:34:09

标签: c# regex backend


我尝试更改从该函数创建的 array 中的 string File.ReadAllLines(csspath)

我尝试做的是使用Regex.Replace将输出分配给我使用的string(在这种情况下为file)。 />
在函数中,我得到数组和我想要将字符串更改为的字符串。

问题就是当我使用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 :(得分:0)

我建议设计更改:让方法返回更改(而不是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