如果单独引用,请替换单引号

时间:2014-02-04 21:22:18

标签: c# string replace escaping

我有ST.JOHN'S

字样

如果我跑了两次(为了论证而,我有一个合理的理由):

String.Replace("'", "''")

结果将为ST.JOHN''''S

'单引号没有任何其他''单引号时,如何将'单引号替换为'两个单引号 的单引号引用了吗?

2 个答案:

答案 0 :(得分:5)

您可以使用regular expression,如下所示:

Regex.Replace("ST.JOHN'S", "([^']|^)'([^']|$)", "$1''$2")  // ST.JOHN''S

或者像这样:

Regex.Replace("ST.JOHN'S", "(?<!')'(?!')", "''")  // ST.JOHN''S

无论哪种方式,这只会替换任何其他'字符所包围的单个'字符而不是

答案 1 :(得分:1)

您可以使用正则表达式断言引用本身就是全部。

System.Text.RegularExpressions.Regex.Replace(inputText, "(?<!')'(?!')", "''")

结果:

System.Text.RegularExpressions.Regex.Replace("ST.JOHN'S", "(?<!')'(?!')", "''")
// ST.JOHN''S

System.Text.RegularExpressions.Regex.Replace("ST.JOHN''S", "(?<!')'(?!')", "''")
// ST.JOHN''S