【问题标题】:replace double quote with double double quote [closed]用双双引号替换双引号[关闭]
【发布时间】:2013-04-26 08:57:06
【问题描述】:

我该怎么做?

当前字符串:

string json = @"[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]";

目标:

string json = @"[{""data"":{""JobID"":""1"",,""Amount"":""6500"",""Description"":""a""}}]";

【问题讨论】:

  • 你能澄清一下吗?第一个“字符串”根本不是有效的 C#……第二个是……而“如何”就是您已经完成的:编写有效的 C#
  • 我认为我们都低估了问题的复杂性。我有 Martin Fowler 的电子邮件地址,我希望他能尽快加入这个话题。
  • @Marc:我收到的第一个字符串是 json 响应。实际上是这样的。 "\"[{\\\"fieldValuePair\\\":{\\\"JobID\\\":\\\"1\\\",\\\"BillGenerationDate\\\":\\\" 2013 年 4 月 18 日下午 5:45:22 \\\\",\\\\"BillID\\\\":\\\\"115546\\\\",\\\\"BillNo\\\\":\\\\" 115546\\\\",\\\\"客户ID\\\\":\\\\"6726332\\\\",\\\\"支付状态\\\\":\\\\"0\\\\",\\\\" PaymentRequiredStatus\\\\":\\\\"True\\\\",\\\\"DueType\\\\":\\\\"1\\\\",\\\\"截止日期\\\\":\\\\" 2013-04-30\\\\",\\\\"产品名称\\\\":\\\\"PSE&G煤气费\\\\",\\\\"金额\\\\":\\\\"400\\\\ ",\\\"说明\\\":\\\"PSEG Bill Apr 4 周\\\"}}]\""
  • @BijoyKJose 是的,但我认为您只是在逃跑中绊倒;您在 string 实例中获得的 JSON 与以 C# 文字编写的相同 JSON 的表示不同 - 因为 C# 文字必须有转义才能知道文字的开始/结束位置。

标签: c# .net string replace


【解决方案1】:

只需尝试Replace("\"", "\"\"")

string json = "[{\"data\":{\"JobID\":\"1\",,\"Amount\":\"6500\",\"Description\":\"a\"}}]";

string result = json.Replace("\"", "\"\"");

结果:

【讨论】:

  • 这个问题可能不是一个用“”替换“”的问题 - 在第二次阅读时,看起来这个问题实际上是 C# 逐字字符串文字之一......
  • @MarcGravell 也许。无论如何,我试图提供一个适合 Q 中所述的输入和输出的答案。
  • @Hossein 输入的开头无效...
  • @MarcGravell 是的,我也为他提供了正确的。
  • @Hossein:试过这个。但没有改变
【解决方案2】:

C# 中的@"..." 语法是逐字字符串文字;这意味着编译器不使用\n\" 等转义符,而是直接处理所有字符," 除外,它必须由"" 表示。因此,以下行在 C# 中无效:

string json = @"[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]";

这违反了 C# 逐字字符串文字的转义规则。正确的 C# 是你已经拥有的

string json = @"[{""data"":{""JobID"":""1"",,""Amount"":""6500"",""Description"":""a""}}]";

既然第一行是无效的无论如何,问它们之间如何转换是没有意义的,除了说:写有效的C#。

但是,第二个字符串仍然代表json数据:

[{"data":{"JobID":"1",,"Amount":"6500","Description":"a"}}]

C#中的""不存在;它们只是逃避 - 你需要将它们阅读为"

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 2021-02-07
  • 2021-08-12
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
相关资源
最近更新 更多