0

我试图在随机变化的 2 个字符之间替换。

例如:我正在尝试将字体系列随机替换{font-family: 'Arial'}为 body {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 + "'}");
4

1 回答 1

5

您需要为此使用正则表达式。例如:

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

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

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

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

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

请注意,这些正则表达式既快又脏。他们期待有效的输入,如果输入格式错误,将会失败。

于 2013-09-24T02:50:23.050 回答