0

我有一个字符串,我需要在其中转义任何出现的特殊字符组合。换句话说,我需要在任何此类组合的任何出现的前面加上一个“\”。大多数组合实际上是单个字符(例如双引号或反斜杠),但有些组合是多字符(例如“&&”)。一种方法是使用这些组合创建一个字符串数组,循环它们并运行 a String.Replace(),最后检查反斜杠以避免递归转义。但是有没有更好(更优雅/更快/等)的方法呢?谢谢

4

3 回答 3

3

使用您的 Replace 想法,但使用StringBuilder代替(更好的性能)。

于 2012-09-17T15:42:45.563 回答
1

您可以为此使用Regex.Replace 。

var input = @"abc'def&&aa\cc""ff";
var output = Regex.Replace(input, @"'|&&|""|\\", m => @"\" + m); // => "abc\'def\&&aa\\cc\"ff"
于 2012-09-17T15:46:58.453 回答
0

您可以只取整个字符串并为您想要执行的每种替换类型运行 String.Replace(),据我所知,这是最快/最优雅的方法。这就是为什么它是一种内置方法。

于 2012-09-17T15:44:29.780 回答