jam*_*123 33 .net c# string.format exception-handling
下面的代码一直给我一个错误,说输入字符串的格式不正确,但我很确定它是对的,不是吗?
int id = 112;
String[] newData = { "1", "2", "21", "reidb", "reidb", "reidb", "reidb", "aa",
"Some description", "11", "2012-02-28", "2012-01-29", "true", "1", "1",
"true", "note note note", "true", "1", "2011-12-03", "45"};
String data = "{ cmd: \"save magellan deal\", data: { id: {0} , AId: {1}, " +
"CId: {2}, CCId:{3}, LA: \"{4}\", BA: \"{5}\" , " +
"LSA: \"{6}\" , BSA: \"{7}\" , \"path: \"{8}\"," +
"dscp: \"{9}\", SI: \"{10}\", CD: \"{11}\", " +
"period: \"{12}\", IsStatic: {13}, LSD: {14}, LC: {15}, RB: {16},} " +
"Notes: \"{17}\", IsEE: {18}, RBy: {19}, DPDD: \"{20}\", LId: {21} } }";
String cmd = String.Format(data, id.toString(), newData);
Run Code Online (Sandbox Code Playgroud)
任何想法?
===编辑===
修复大括号后,"索引(从零开始)"的新错误必须大于或等于零且小于参数列表的大小.给出.newData有21加上id.toString(),应该是22吗?
Céd*_*non 72
在格式字符串中转义"{","}"(通过复制它们):
"{{ cmd: \"save magellan deal\", data: {{ id: {0} , AId: {1}, " +
"CId: {2}, CCId:{3}, LA: \"{4}\", BA: \"{5}\" , " +
"LSA: \"{6}\" , BSA: \"{7}\" , \"path: \"{8}\"," +
"dscp: \"{9}\", SI: \"{10}\", CD: \"{11}\", " +
"period: \"{12}\", IsStatic: {13}, LSD: {14}, LC: {15}, RB: {16},}} " +
"Notes: \"{17}\", IsEE: {18}, RBy: {19}, DPDD: \"{20}\", LId: {21} }} }}"
Run Code Online (Sandbox Code Playgroud)
并且您在格式字符串中有22个元素,在数组中有21个元素.
newData中有21个元素,但使用22个占位符(编号为0到21).
此外,您必须在输入数据中转义文字"{"
打开和关闭括号被解释为开始和结束格式项.因此,您必须使用转义序列来显示文字左括号或右括号.在固定文本中指定两个开括号("{{")以显示一个左括号("{")或两个右括号("}}")以显示一个右括号("}").格式项中的大括号按其遇到的顺序依次解释.不支持解释嵌套大括号.
http://msdn.microsoft.com/en-us/library/txafckwd.aspx