随机更改数据的字符串替换

时间:2013-09-24 02:43:22

标签: c# string replace

我正在尝试替换2个随机更改的字符。

例如:我正在尝试将字体系列从{font-family: 'Arial'}随机替换为正文{font-family: 'verdena'}。但每次我更换一个字体系列时,我都无法找到要替换的系列类型,因为它随机变化。

请帮我找到在两个字符串之间替换随机字符串的解决方案。

//Generate Random Font
var FontNames = new List<string> { "Georgia", "Serif", "verdana", "arial", "calibri" };
Random randonGenf = new Random();
int index = randonGenf.Next(FontNames.Count);
var FontName = FontNames[index];
FontNames.RemoveAt(index);

var fileFontContents = System.IO.File.ReadAllText(@"C:\SchoolSite\default.css");
fileContents = fileFontContents.Replace("body {font-family: 'Arial'}", "body {font-family: '" + FontName + "'}");

1 个答案:

答案 0 :(得分:5)

您需要使用regular expression。例如:

fileContents = Regex.Replace(
    fileFontContents,
    @"body \{font-family: '[^']+'\}",
    "body {font-family: '" + FontName + "'}");

如果你想在没有引号的情况下这样做,那就是:

fileContents = Regex.Replace(
    fileFontContents,
    @"body \{font-family: [^\}]+\}",
    "body {font-family: " + FontName + "}");

简而言之,'[^']+'说,“匹配单引号,然后匹配任何不是单引号的字符序列,最后是另一个单引号。这样就匹配'anything'

在非引用的情况下,我使用右大括号作为分隔符。也就是说,[^}]+\}说:“匹配任何不是右括号的字符序列,并使用右括号跟随它。”

请注意,这些正则表达式快速而且脏。他们期望有效的输入,如果输入格式不正确,将会非常失败。