我正在尝试替换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 + "'}");
答案 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'
。
在非引用的情况下,我使用右大括号作为分隔符。也就是说,[^}]+\}
说:“匹配任何不是右括号的字符序列,并使用右括号跟随它。”
请注意,这些正则表达式快速而且脏。他们期望有效的输入,如果输入格式不正确,将会非常失败。