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来获得相同的字符串。