C# 替换\“;加上;串

C# 替换\“;加上;串,c#,string,replace,C#,String,Replace,我有一个字符串: var a = "some text \""; 我想用“替换\” a.Replace(“\”,“”)=>与“string.Replace(string,string)”匹配的最佳重载方法具有一些无效参数 a.Replace(“\”,“”)=>换行符为常量 最后,我想获得“一些文本”您需要一些转义!使用以下命令: a.Replace("\\\"", "\""); 您需要转义字符串,您正在寻找: a.Replace("\\\"", "\""); 那就够了 注意 请注意-仅调用

我有一个字符串:

var a = "some text \"";
我想用
替换
\”

a.Replace(“\”,“”)=>与“string.Replace(string,string)”匹配的最佳重载方法具有一些无效参数

a.Replace(“\”,“”)=>换行符为常量


最后,我想获得
“一些文本”

您需要一些转义!使用以下命令:

a.Replace("\\\"", "\"");

您需要转义字符串,您正在寻找:

a.Replace("\\\"", "\"");
那就够了

注意

请注意-仅调用replace会创建一个新字符串值,而不会编辑原始字符串。如果要使用此字符串,可以执行“替换内联”操作,也可以按如下方式重新指定原始值:

a = a.Replace("\\\"", "\"");

这也可能是你面临的另一个问题

你似乎被C的规则弄糊涂了。文本
“some text\”
的值为
some text“
。如果在VS调试器中查看此字符串,它将显示生成值的C文本:
“some text\”
。如果打印它,您将看到它的值实际上是
some text“

如果该值实际上是
一些文本\“
,可以用
一些文本\\”
@“一些文本\”
表示,那么您真正想要的是:

var b = a.Replace("\\\"", "\"");

我怀疑您的字符串实际上已经是您想要的,不过:
一些文本“

您可以使用
@
引入的逐字字符串。在逐字字符串中,双引号通过加倍进行转义,反斜杠不再用作转义字符:

string result = a.Replace(@"\""", @""""); 
与普通字符串相比,您仍然必须转义双引号(
),但不能转义反斜杠(
\

当然,您可以结合使用这两种解决方案:

string result = a.Replace(@"\""", "\""); 

另请参见:

'\'这将在C中被视为转义字符;您需要使用双引号将其替换为。 请参阅下面的代码片段

string afterreplace = txtBox1.Text.Replace("\\\"", "\"");

a.Replace(“\\”,“”)不应编译这需要两个字符串或两个字符,但现在您的答案只是与其他现有答案的重复。哦,某个地方出错了\“已经逃到了”。如果您的字符串是
sometext\”
,那么使用它时得到的结果将是
sometext“
您的源字符串真的有
\“
在调试器中还是调试器显示的内容?@Alex调试器中是否有?调试器将字符串显示为转义字符串,而不是实际打印的字符串。请尝试将字符串打印到您的控制台,或者您可以通过按放大镜在文本查看器中显示它。@Alex如前所述和其他一些注释中所述-调试器显示的
\“
是字符串的转义版本。单击右侧的小放大镜可打开实际的字符串(它只有一个双引号)。我几乎写了这个解决方案,但我不确定它是否更适合双引号。不过——它确实有效!@Alex您的字符串实际上不包含\。这就是它在调试器中的显示方式,因为您可以键入C#source来获得相同的字符串。