C# 在C中CSS为字符串时设置CSS属性的值#

C# 在C中CSS为字符串时设置CSS属性的值#,c#,css,parsing,C#,Css,Parsing,我在C#中有一个字符串,它本质上是一个CSS文件。我可以解析此CSS文件并使用此库提取值,这非常有用: 太棒了。但是,我现在需要更改文件中的值,而我一生都不知道如何可靠地做到这一点 用最简单的术语来说,我用C#表示这个字符串: 我需要写一个函数: public string ChangeValue(string oldstring, string name, string type, string value) 当用这个调用时: string newstring = ChangeValue("

我在C#中有一个字符串,它本质上是一个CSS文件。我可以解析此CSS文件并使用此库提取值,这非常有用:

太棒了。但是,我现在需要更改文件中的值,而我一生都不知道如何可靠地做到这一点

用最简单的术语来说,我用C#表示这个字符串:

我需要写一个函数:

public string ChangeValue(string oldstring, string name, string type, string value)
当用这个调用时:

string newstring = ChangeValue("body{background-color:#323432;}", "body","background-color","#ffffff"); 
上面的“newstring”字符串变为:

body
{
   background-color:#ffffff;
}

非常感谢你的帮助。多谢各位

无需传入旧的
字符串即可完成此操作。您需要返回一个
字符串,而不是
void

public static string ChangeValue(string name, string type, string value) {
     return String.Format("{0}\r\n{{\r\n    {1}:{2};\r\n}}", name, type, value);
}
输出:

body
{
    background-color:#ffffff;
}

但是为什么不使用ExCSS公开的API呢

var parser = new Parser();
var stylesheet = parser.Parse(css);

var bodyBackgroundColor = stylesheet.StyleRules
  .FirstOrDefault(s => s.Selector.ToString() == "body")
  .Declarations
  .FirstOrDefault(d => d.Name == "background-color")
  .Term = new HtmlColor(255, 255, 255);

Console.WriteLine(stylesheet.ToString(true, 0));
输出:

body{
        background-color:#FFF;
}

你的意思是
publicstringchangevalue
还是说你一直在使用
void
返回类型?你需要如何解析css字符串的算法吗?从这个数组中使用“}”,而不是“{”,而从子数组中使用“;”。或者我不理解你的问题?就我个人而言,你是如何发现API公开了这种能力的?我在公共API中看到这种情况时猜到的
body{
        background-color:#FFF;
}