簡體   English   中英

在c#中用double qoutes替換轉義字符

[英]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在控制台中顯示字符串的實際值,您將看到反斜杠不存在。

這是一個屏幕截圖,顯示當字符串只包含一個引號時,即時窗口中的反斜杠。

immediat窗口中的反斜杠

原始答案

三件事:

  • 字符串是不可變的。 Replace不會改變字符串 - 它返回一個新字符串。
  • 是否要替換引號"\\""或反斜杠后跟引號"\\\\\\"" 如果你想要后者,最好使用逐字字符串文字,這樣你就可以編寫@"\\"""
  • 您不需要在字符串上調用ToString

嘗試這個:

s = s.Replace(@"\""", "\"");

ideone上看到它。

具有諷刺意味的是,您需要逃避引號和反斜杠,如下所示:

s.ToString().Replace("\\\\\\"", "\\"");

否則它會把你的字符串拼湊在一起並做同樣的事情(如果你真的可以使用這樣的單引號):

s.ToString().Replace('"', "");

(你的第二個字符串有四個引號......這就是為什么你沒有因為“”而得到編譯錯誤的原因)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM