这两个字符串之间有什么区别?

时间:2009-04-25 13:01:24

标签: c# string nunit culture

使用nUnit测试特定文化的输出(货币格式),但我们得到以下结果。

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

我们看不出字符串之间的区别。我们的预期结果使用“空格”字符。

我们可以将不同的空格字符放入已接受的结果中以使测试通过吗?

顺便说一下,测试的培养物是fr-FR。

编辑:感谢Adam,你发现了unicode角色。我们已经改变了我们的预期结果,现在每个单元测试都通过了。

2 个答案:

答案 0 :(得分:5)

他们可能是不同类型的空间。 Unicode有很多不同的space characters。通过将字符转换为整数来查看索引2处的代码点以获得答案。

修改

在回复您的评论时,代码点160为non-breaking space。您可以enter it directly加入源代码(例如Windows上数字键盘上的Alt + 0160),或使用转义序列:

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

答案 1 :(得分:1)

很可能它是一个空白的字符,但不是空格,以避免标签,以及在启用自动换行时将数字分成两个。