2009-04-25 14 views
1

Verwenden von nUnit, um die Ausgabe (Währungsformatierung) für eine bestimmte Kultur zu testen, aber wir erhalten das folgende Ergebnis.Was ist der Unterschied zwischen diesen beiden Saiten?

Fail: Formatting currency amount 
    String lengths are both 11. Strings differ at index 2. 
    Expected: "12 765,87 €" 
    But was: "12 765,87 €" 
    -------------^ 

Wir können den Unterschied zwischen den Zeichenfolgen nicht sehen. Unser erwartetes Ergebnis verwendet ein "Space" -Zeichen.

Gibt es ein anderes Leerzeichen, das wir in das akzeptierte Ergebnis einfügen können, um den Test zu bestehen?

Übrigens ist die getestete Kultur fr-FR.

Edit: Danke Adam, du bist genau richtig mit dem Unicode-Charakter. Wir haben unsere erwarteten Ergebnisse geändert und nun ist jeder Unit-Test bestanden.

Antwort

5

Es ist möglich, dass sie verschiedene Arten von Räumen sind. Unicode hat viele verschiedene space characters. Sehen Sie sich die Codepunkte in Index 2 an, indem Sie die Zeichen in Ganzzahlen umwandeln, um Ihre Antwort zu erhalten.

bearbeiten

Als Antwort auf Ihren Kommentar, 160-Codepunkt ist ein non-breaking space. Sie kann enter it directly in den Quelltext (zB Alt + 0160 auf der Zehnertastatur unter Windows) oder eine Escape-Sequenz verwenden:

// U+20AC is the Unicode code point for the euro sign 
string expected = "12\u00A0765,87 \u20AC"; 
+0

ist das Zeichen 160 ein Leerzeichen ... wie können wir das in unser "erwartetes" Ergebnis einbeziehen? –

1

Wahrscheinlich ist es ein Zeichen, das leer ist, aber kein Raum, Etiketten zu vermeiden und so, um die Zahl in zwei zu teilen, wenn das Umbrechen von Wörtern aktiviert ist.

Verwandte Themen