在C#字符串中转义双引号

5

我正在尝试转义字符串中的 \" ,像这样:

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

但是对于text的结果,
arash "moeen"

原来是这样
arash \\\"moeen\\\"

我该如何解决这个问题?

为什么需要对它们进行转义? - zerkms
文本 = arash "moeen" - arash moeen
1
所以你希望你的结果文本变成:arash \"moeen\" - Marlon
@Marlon 是的,这正是我想要的结果。 - arash moeen
@arashmoeen 你有没有考虑使用任何知名的 JSON 序列化器?我理解在某些情况下,你可能需要一个轻量级的解决方案,因此可以使用简单的 hackish(不一定是坏的)解决方案...但前提是你确定要自己编写解决方案。 - Vikas Gupta
显示剩余5条评论
6个回答

6
只需使用@来表示字面字符串。
text.Replace(@"this", @"that");

例子:

text.Replace(@"\", @"\\").Replace(@"""", @"\""");

1
请使用双引号引用:例如,要获得 a "b",请键入 @"a ""b""" - Nameless One
那么如果要转义双引号 " ,应该怎么做呢?.replace(@""", @"\"") ?? - arash moeen
1
应该是 text.Replace(@"", @"\").Replace(@"""", @"""")。 - Alexey
@arashmoeen 好吧,那么我不知道你想要什么或者你正在处理什么。 - B.K.
抱歉 @B.K.,事实证明我有个打字错误,现在它按照预期运作。再次感谢。 - arash moeen
显示剩余2条评论

3
你的任务代码是什么?应该是:
var text = @"arash ""moeen""";

如果这是一个多行字符串,请使用此选项。 - LordDraagon

3

如果我理解正确,首先,text = arash "moeen" 不是有效的正则字符串字面量。我猜你的字符串是这样的;

string s = "text = arash \"moeen\"";

这将被打印为

text = arash "moeen" // I think this is your original string.

由于你的字符串中包含了 arash \"moeen\" ,因此你只需要将其中的 " 替换为 \",如下:

string s = "text = arash \"moeen\"";
s = s.Replace("\"", "\\\"");

所以你的结果将会是arash \"moeen\"

更多信息:转义序列

如果这是一个JSON字符串,那么我的回答将无效 :-p


是的,它将作为JSON字符串的一部分,经过解析后,最终会在我的TextView中显示为arash "moeen"。 - arash moeen

2
string text = @"arash ""moeen""";
MessageBox.Show(text.Replace(@"\", @"\\").Replace(@"""", @"\"""));

0
假设你有这样的字符串
string test = "He said to me, \"Hello World\". How are you?";

在这两种情况下,字符串都没有改变 - 它中间有一个被转义的双引号。 这只是一种告诉C#该字符属于字符串而不是字符串终止符的方式。


-2

当你想要从 arash "moeen" 中获取 arash \"moeen\" 时,使用 text.Replace(", \");


当你执行字符串文本 = "arash"moeen"",然后text.Replace(","); - Sybren
1
@Sybren,那甚至无法编译。没有一个接受字符串类型参数的string.Replace重载函数。 - Nameless One

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接