用双下划线替换单个下划线

时间:2014-03-20 12:33:19

标签: regex wpf

WPF将单个下划线视为content的{​​{1}}

中的助记符

但是,内容可能需要包含下划线。

内容由用户定义,没有什么可以阻止他们按顺序或不按下多个下划线。 EG

Button

如果我将上述无意义字符串分配给Button.Content,它会将单个下划线视为助记符,并将导致This_Is It for the__moment and this is three___of the things (注意_缺少_我现在将ThisIs作为一个单词)。我希望它更新它ThisIs It for the__moment and this is three___of the things(注意它现在是双下划线,但是下划线的其他情况保持不变)。

这就是我所拥有的,它是如此笨重(尽管它有效)。

This__Is It for the__moment and this is three___of the things

我的问题是,RegEx会有更少的代码吗?

3 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式查找单个下划线:

(?<!_)_(?!_)

然后用两个下划线替换它。

(?<!_)是负面的背后;它可以防止匹配的下划线前面有另一个下划线。

(?!_)是一个负面的预测;它可以防止匹配的下划线后跟另一个下划线。

regex101 demo


您需要使用using System.Text.RegularExpressions;,您可以像下面一样使用它:

var regex = new Regex(@"(?<!_)_(?!_)");
var result = regex.Replace(str, "__");

答案 1 :(得分:2)

以下c#代码应该可以满足您的需求。

var reg = new Regex("(?<!_)_(?!_)");
reg.Replace("your string","__");

答案 2 :(得分:1)

你可以做一个环视检查

(?<!_)\_(?!_)

并用双下划线替换下划线

演示:http://regex101.com/r/bD1cI9