C#字符串格式错误

时间:2016-11-24 06:46:36

标签: c#

我需要通过此链接发送我从模型中收到的值,proposalName字段必须是引号。我该怎么办?

这是我的服务网址。

   string path = string.Format("{ProposalId:{proposalId},ProposalName:{"proposalName"},VendorId:{vendorId}}",
               Uri.EscapeDataString(proposalId.ToString()),
               Uri.EscapeDataString(proposalName),
               Uri.EscapeDataString(vendorId.ToString()));

5 个答案:

答案 0 :(得分:4)

你可以通过转义引号来简单地引用引号,就像这样 -

string path = string.Format("{{0},ProposalName:\"{1}\",VendorId:{2}}",
                   Uri.EscapeDataString(proposalId.ToString()),
                   Uri.EscapeDataString(proposalName),
                   Uri.EscapeDataString(vendorId.ToString()));

根据您更新的问题,如果您需要在网址中传递双引号,则需要将其编码为%22

您还可以使用URI,这可以让网址具有很大的灵活性。例如 -

Uri myUri = new Uri("http://google.com/search?hl=en&q=\"query with quotes\"");

继续您的示例 - 将EscapeDataString替换为Uri.EscapeUriString。它将转义字符以形成有效的URL。 "将替换为%22

一些建议herehere -

答案 1 :(得分:1)

你的问题在{"1"}部分完全正确。双引号"应位于{}之外,而不在其中。 这是固定代码。

string path = string.Format("{{0},ProposalName:\"{1}\",VendorId:{2}}",
               Uri.EscapeDataString(proposalId.ToString()),
               Uri.EscapeDataString(proposalName),
               Uri.EscapeDataString(vendorId.ToString()));

string path = string.Format(@"{{0},ProposalName:""{1}"",VendorId:{2}}",
               Uri.EscapeDataString(proposalId.ToString()),
               Uri.EscapeDataString(proposalName),
               Uri.EscapeDataString(vendorId.ToString()));

如果您使用的是C#6,那么您可以按照以下内容编写

string path = $"{Uri.EscapeDataString(proposalId.ToString())},ProposalName:\"{Uri.EscapeDataString(proposalName)}\",VendorId:{Uri.EscapeDataString(vendorId.ToString())}";

答案 2 :(得分:1)

这可能会为你做到这一点

\"{1}\"

而不是

{"1"}

因为您可以放置​​\符号来表示转义序列,后跟保留字符

所以

string.Format("{{{0},ProposalName:\"{1}\",VendorId:{2}}}",

答案 3 :(得分:0)

我认为转义引号并将它们放在括号之外会起作用:

"{{0},ProposalName:\"{1}\",VendorId:{2}}"

根据C#版本,您也可以这样做,我通常认为这是一种更简单,更清洁的方式:

 string path = $"{proposalId},ProposalName:\"{proposalName}\",VendorId:{vendorId}";

答案 4 :(得分:0)

您有两个问题:

  • 错误引用(应 大括号{...}转义
  • {}转义错误:{{表示格式化字符串中只有一个'{'

应该是

string path = string.Format("{{{0},ProposalName:\"{1}\",VendorId:{2}}}",
请注意,

  • \"
  • 之外的转义引用{1}
  • 三倍花括号{{{}}}

修改:在已编辑的问题中,您遇到了相同的错误:

string format = 
  "http://mobile.teklifdosyam.com/VendorReport/GetListProposalService?&page=1&start=0&limit=10&filter=" + 
   "{{ProposalId:{0},ProposalName:\"{1}\",VendorId:{2}}}";

string path = string.Format(format,
  Uri.EscapeDataString(proposalId.ToString()),
  Uri.EscapeDataString(proposalName),
  Uri.EscapeDataString(vendorId.ToString()));

请注意,\"之外的转义引用{1},双'{{'和三倍'}}}'。格式化时,您必须使用数字作为占位符:因此{"proposalName"}必须更改为{0}