半复合字符串替换?

4 c# string replace

我有这个文字

'Random Text', 'a\nb\\c\'d\\', 'ok'
Run Code Online (Sandbox Code Playgroud)

我希望它成为

'Random Text', 'a\nb\c''d\', 'ok'
Run Code Online (Sandbox Code Playgroud)

这个问题正在逃避.而不是逃避与\我现在只能逃跑'''.这是为第三方程序,所以我无法更改它,因此需要将一个转义方法更改为另一个.

问题是\\'.如果我做字符串替换它将变为\''而不是\'.也\n并不是一个新行,但实际文本\n不应进行修改.我尝试使用正则表达式,但我不能想办法说,如果'将其替换''否则,如果\\将其替换\.显然,分两步执行此操作会产生问题.

如何正确替换此字符串?

voi*_*hos 6

如果我没有理解你的问题,问题在于更换\\\,那么这可能会导致另一种替代,如果它的权利之前发生'.一种技术是首先将它替换为中间字符串,确保在其他任何地方都不会出现,然后在完成后将其替换回来.

var str = @"'Random Text', 'a\nb\\c\'d\\', 'ok'";
str.Replace(@"\\", "NON_OCCURRING_TEMP")
    .Replace(@"\'", "''")
    .Replace("NON_OCCURRING_TEMP", @"\");
Run Code Online (Sandbox Code Playgroud)

正如@AlexeiLevenkov所指出的,您也可以同时Regex.Replace进行两种修改.

Regex.Replace(str, @"(\\\\)|(\\')",
    match => match.Value == @"\\" ? @"\" : @"''");
Run Code Online (Sandbox Code Playgroud)