.net 是什么导致String.Format意外地移动字符?

.net 是什么导致String.Format意外地移动字符?,.net,string.format,.net,String.format,所以我有这个代码: /* variables already initialized: int numFlips int numAggrFlips double pctAggrFlips */ String flipsMessage = String.Format( "Flips: {0} / Aggr: {1} ({2})", numFlips, numAggrFlips, pctAggrFlips.ToString("0.0%") ); 出于某种神秘的原

所以我有这个代码:

/* variables already initialized:
   int numFlips
   int numAggrFlips
   double pctAggrFlips
*/

String flipsMessage = String.Format(
    "Flips: {0} / Aggr: {1} ({2})",
    numFlips, numAggrFlips, pctAggrFlips.ToString("0.0%")
);
出于某种神秘的原因,输出结果是以下字符串:

(翻转:0/Aggr:0(0.0%)

知道什么会让括号像这样乱七八糟吗


添加(或解释?)奇怪之处:此问题不会发生在我使用Windows XP的开发计算机上。字符串按预期显示。问题确实发生在我们的生产计算机上(使用相同的代码),使用Windows Server 2008。

嗯,我猜你有一个回车潜入某处。

嗯,我猜你有一个回车潜入某处。

这个怎么样:

String flipsMessage = String.Format(
    "Flips: {0} / Aggr: {1} ({2:P})",
    numFlips, numAggrFlips, pctAggrFlips
);
这个怎么样:

String flipsMessage = String.Format(
    "Flips: {0} / Aggr: {1} ({2:P})",
    numFlips, numAggrFlips, pctAggrFlips
);

我怀疑您误读了某些内容…在您的示例中,不仅有一个圆括号移到了开头,而且一个结束圆括号已被一个开始圆括号替换…根据您提供的最小数据,我的最佳猜测是,您显示的输出是由解决方案中其他地方的代码片段生成的在您没有看到的情况下,我会在调试模式下,逐行仔细检查代码,并确保这一行实际上就是输出显示值的那一行


此外,请停止,并查看变量flipsMessage在调试模式下的计算结果。

我怀疑您误读了某些内容……在您的示例中,不仅有一个括号移到了开头,还有一个结束括号被一个开始括号所取代……根据您提供的最小数据,我的最佳猜测是:您正在显示的输出是由解决方案中其他地方的代码片段生成的,而您没有看到这些代码片段…我会在调试模式下,逐行仔细检查代码,并确保这一行实际上是输出显示值的代码片段


另外,停止,查看变量flipsMessage在调试模式下的计算结果。

我猜您正在将此消息输出到某种屏幕控件,该控件的MaxLength属性设置为与消息相同的长度(或者可能是具有MaxLength的列类型的DataTable)。但是,在消息得到输出之前,整个字符串有时会被括号包围

flipsMessage = Flips: 0 / Aggr: 0 (0.0%) // length: 25
flipsWParens = (Flips: 0 / Aggr: 0 (0.0%)) // length: 27
flipsTrunced = (Flips: 0 / Aggr: 0 (0.0% // length: 25

在某些机器上,这些额外的括号不会被添加,因此您没有问题。不过,我不知道为什么机器与机器之间会有所不同。

我猜您正在将此消息输出到某种屏幕控件,该控件的MaxLength属性设置为与消息相同的长度(或者可能是列类型为MaxLength的DataTable)。但是,在消息得到输出之前,整个字符串有时会被括号包围

flipsMessage = Flips: 0 / Aggr: 0 (0.0%) // length: 25
flipsWParens = (Flips: 0 / Aggr: 0 (0.0%)) // length: 27
flipsTrunced = (Flips: 0 / Aggr: 0 (0.0% // length: 25

在某些机器上,这些额外的括号不会被添加,因此您没有问题。不过,我不知道为什么机器之间的括号会有所不同。

如何输出“flipsMessage”?非常奇怪-我看不到这种行为。这个问题肯定有其他原因-正如David所说,这可能与您如何输出字符串有关,或者可能与格式字符串从其他地方加载有关,或者可能是由于某种原因被损坏。运行时的哪个版本?如果您正在进行C编码,可能有一些原因导致这种行为r但在托管内存环境中,这很奇怪……如何输出“flipsMessage”?非常奇怪-我看不到这种行为。这个问题肯定有其他原因-正如David所说,这可能与您如何输出字符串有关,或者可能与格式字符串从其他地方加载有关,或者可能是由于某种原因被损坏。运行时的哪个版本?如果您正在进行C编码,可能有一些原因导致这种行为r但在托管内存环境中,这非常奇怪……回车符不能解释输出中的前导“
”。我猜他输入了一个前导“)”回车符不能解释输出中的前导“
”。我猜他输入了一个前导“)”