在字符串中替换\“with”

时间:2014-05-13 14:36:51

标签: c# string replace

我有一个字符串:

var a = "some text \"";

我想将\"替换为"

a.Replace("\"", '"'); => 'string.Replace(string,string)'的最佳重载方法匹配有一些无效的参数

a.Replace("\"", """); => 常量中的换行符

最后我想获得"some text"

5 个答案:

答案 0 :(得分:8)

你需要逃避你的字符串,你正在寻找:

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

应该这样做!

注意

请注意 - 只需调用replace即可创建一个新的STRING VALUE,它不会编辑原始字符串。如果你想使用这个字符串你可以做内联替换,或者你可以像这样分配回原始值:

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

这也可能是你遇到的另一个问题!

答案 1 :(得分:1)

您似乎对C#的escaping规则感到困惑。文字"some text \""的值为some text "。如果你在VS调试器中查看这个字符串,它将显示产生值{C <1}}的C#文字。如果您打印它,您会看到其值实际为"some text \""

如果该值实际为some text ",可由some text \""some text \\\""表示,那么您真正想要的是:

@"some text \"""

我怀疑你的字符串实际上已经是你想要的了,但是:var b = a.Replace("\\\"", "\"");

答案 2 :(得分:1)

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

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

与普通字符串相比,您仍然必须转义双引号("),而不是反斜杠(\)。

当然,您可以将两种解决方案结合起来:

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

另请参阅:What character escape sequences are available?

答案 3 :(得分:0)

你需要一些逃脱!使用此:

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

答案 4 :(得分:0)

'\'这将被视为C#中的转义字符,您需要使用双引号来替换它。 见下面的片段

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