如何在保持大小写的同时替换单词?

How to replace words while keeping case?

我有这样一个字符串:

string myString = "String testing string replace"

我想使用那个字符串并给 string 这个词一个样式。所以最后的字符串是:

myString = "<span class='myclass'>String</span> testing <span class='myclass'>string</span> replace"

如何以编程方式执行此操作?以便单词 string 的两个实例都保留它们的大小写?

可能是这样的:

var myString2 = Regex.Replace(
  myString, 
  Regex.Escape("string"), 
  "<span class='myclass'>[=10=]</span>",    
  RegexOptions.IgnoreCase
);

模式只是您要替换的字符串,转义因此如果其中有任何字符对 Regex 有意义(如句点),它们将完全匹配。当匹配发生时,整个匹配存储在变量 $0 中。这个变量可以用在替换中,所以当我们指定 IgnoreCase 时,它​​意味着第一个匹配是 String,这意味着替换 $0 是 String.. 第二个匹配是 string

string myString = "String testing string replace";
string stringOut = "";
foreach (var word in myString.Split(new char[] { ' '}))
{
  stringOut += $"<span class='myclass'>{word}</span> ";
}
Console.WriteLine(stringOut);