2009-07-28 13 views
0

So habe ich diesen Code:Was könnte dazu führen, dass String.Format Zeichen unerwartet bewegt?

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

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

aus unerfindlichen Gründen endet die Ausgabe die folgende Zeichenfolge wird oben:

(Flips: 0/Aggr: 0 (0.0%

Eine Idee, was dazu führen würde, dass die Klammern so durcheinander kommen würden:

Um hinzuzufügen (oder vielleicht zu erklären? ist kein Problem auf meinem Entwicklungscomputer mit Windows XP. Die Zeichenfolge erscheint wie erwartet. Das Problem tritt auf unseren Produktionsmaschinen (mit dem gleichen Code) unter Windows Server 2008 auf.

+0

Wie gibst du "flipsMessage" aus? – David

+0

Sehr seltsam - ich sehe dieses Verhalten nicht. –

+0

Es muss etwas anderes zu diesem Problem geben - wie David sagt, könnte es damit zusammenhängen, wie Sie die Zeichenkette ausgeben, oder vielleicht wird die Formatzeichenkette von irgendwo anders geladen oder wird irgendwie gemangelt. –

Antwort

0

hmmm Ich nehme an, Sie haben irgendwo eine Wagenrückkehr.

+0

Ein Wagenrücklauf erklärt nicht eine führende "' ('" in der Ausgabe. –

+0

Ich vermutete, er falsch eingegeben eine führende ")" – Jimmy

+0

aber ich denke, du hast Recht, einfach würde das F überschreiben – Jimmy

3

Wie wäre es damit:

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

Ich vermute, dass Sie etwas Verlesen ... in Ihrem Beispiel ist nicht nur eine der Klammern zu Beginn bewegt, aber ein Schließen parenetheses durch eine Öffnung ersetzt wurde Klammern ... Meine beste Schätzung basierend auf den minimalen Daten, die Sie präsentieren, besteht darin, dass die Ausgabe, die Sie zeigen, durch ein Code-Snippet an einer anderen Stelle in Ihrer Lösung erzeugt wird, die Sie nicht betrachten ... im Debug-Modus, Zeile für Zeile, und stellen Sie sicher, dass diese Zeile tatsächlich diejenige ist, die den angezeigten Wert ausgibt.

Auch stoppen, und sehen, was der Wert der Variablen flipsMessage im Debug-Modus auswertet.

1

Ich gehe davon aus, dass Sie diese Nachricht an eine Art Bildschirmsteuerung ausgeben, deren MaxLength -Eigenschaft auf die gleiche Länge wie Ihre Nachricht festgelegt ist (oder vielleicht eine DataTable mit einem Spaltentyp mit MaxLength). Bevor die Nachricht ausgegeben wird, wird die gesamte Zeichenfolge jedoch manchmal von Klammern umgeben.

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 

Auf einigen Maschinen werden diese zusätzlichen Klammern nicht hinzugefügt, so dass Sie das Problem nicht haben. Ich habe keine Ahnung, warum es sich von Maschine zu Maschine unterscheiden würde.

Verwandte Themen