[英]replacing escape character with double qoutes in c#
我在變量中有以下字符串,
S:
[{\"roleIndex\":0,\"roleID\":\"c1_r0_23\",\"roleName\":\"Chief Executive\"},
{\"roleIndex\":1,\"roleID\":\"c1_r1_154\",\"roleName\":\"Chief Operator\"}]
我正在嘗試使用以下命令替換\\“with”:
s.ToString().Replace("\"", """");
但這不起作用。
c#中的正確語法是什么?
嘗試s.ToString().Replace(@"\\""", "\\"")
。
@
告訴C#按字面解釋字符串而不是將\\
視為轉義字符。 "\\""
因為第二個參數使用\\
作為轉義字符來轉義雙引號。
如果s
已經是string
類型,則也不需要調用ToString()
。
最后但並非最不重要的是,不要忘記字符串替換不會在適當的位置完成,並將創建一個新的字符串。 如果要保留該值,則需要將其分配給變量:
var newString = s.ToString().Replace(@"\""", "\"");
// or s = s.Replace(@"\""", "\""); if "s" is already a string.
更新
如果您有一個包含"
的字符串,當您在Visual Studio立即窗口中查看此字符串時,它將顯示為\\"
。 這並不意味着你的字符串包含一個反斜杠! 要自己證明這一點,使用Console.WriteLine
在控制台中顯示字符串的實際值,您將看到反斜杠不存在。
這是一個屏幕截圖,顯示當字符串只包含一個引號時,即時窗口中的反斜杠。
原始答案
三件事:
"\\""
或反斜杠后跟引號"\\\\\\""
。 如果你想要后者,最好使用逐字字符串文字,這樣你就可以編寫@"\\"""
。 ToString
。 嘗試這個:
s = s.Replace(@"\""", "\"");
在ideone上看到它。
具有諷刺意味的是,您需要逃避引號和反斜杠,如下所示:
s.ToString().Replace("\\\\\\"", "\\"");
否則它會把你的字符串拼湊在一起並做同樣的事情(如果你真的可以使用這樣的單引號):
s.ToString().Replace('"', "");
(你的第二個字符串有四個引號......這就是為什么你沒有因為“”而得到編譯錯誤的原因)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.