【问题标题】:How to replace words while keeping case?如何在保持大小写的同时替换单词?
【发布时间】:2022-01-03 02:13:14
【问题描述】:

我有一个这样的字符串:

string myString = "String testing string replace"

我想用那个字符串给string这个词赋予一种风格。所以最终的字符串是:

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

如何以编程方式做到这一点?这样 string 单词的两个实例都保持大小写?

【问题讨论】:

  • 查找正则表达式。具体来说,使用捕获组来捕获您的搜索词,然后在替换期间使用对该组的引用。相关:stackoverflow.com/questions/26984428/…
  • 代码好吗?我对正则表达式的用法不是很熟悉
  • 您必须处理一般情况,还是您的字符串众所周知?

标签: c# .net string replace


【解决方案1】:

可能是这样的:

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

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

【讨论】:

    【解决方案2】:
    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 2021-03-29
      • 2021-04-29
      • 2013-10-24
      • 2021-02-28
      相关资源
      最近更新 更多