【问题标题】:Regex Replace Matches All instead of single正则表达式替换匹配全部而不是单个
【发布时间】:2016-09-05 18:19:02
【问题描述】:

我正在尝试了解正则表达式替换方法。我写了一个函数,它应该在第一个大写字母之前插入一个空格,并且前面没有大写字母。

var tmpDisplay = Regex.Replace(name, "([^A-Z ])([A-Z])", "$1 $2");

当我运行它时,它会替换所有前面没有大写字母的大写字母。

我检查了 MSDN,它似乎没有提到正则表达式替换字符串上的全局动作,而不是仅匹配第一种情况。

我怎样才能只替换一个值?谁能提供有关此问题的文档?

【问题讨论】:

  • 您需要声明一个正则表达式对象并使用正则表达式对象实例替换一次。
  • name的内容是什么?
  • @Thomas 它只是您的输入示例“TestNameDTO”

标签: c# regex string replace


【解决方案1】:

静态Regex.Replace 方法没有最大出现次数参数,但类实例有:

var rx = new Regex(@"([^A-Z ])([A-Z])");
Console.WriteLine(rx.Replace("NamePeteParker", "$1 $2", 1)); // Replace just once
                                                       ^^

IDEONE demo

来自MSDN

Regex.Replace Method (String, MatchEvaluator, Int32)
在指定的输入字符串中,将匹配正则表达式模式的指定最大字符串数替换为 MatchEvaluator 委托返回的字符串。

【讨论】:

  • 谢谢你,我很困惑为什么会这样!
猜你喜欢
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2019-10-02
  • 2012-05-27
  • 1970-01-01
  • 2013-12-06
  • 2021-04-10
  • 1970-01-01
相关资源
最近更新 更多