【问题标题】:Whats the difference between these two strings?这两个字符串有什么区别?
【发布时间】:2009-04-25 13:01:23
【问题描述】:

使用 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 字符很了解。我们改变了我们的预期结果,现在每个单元测试都通过了。

【问题讨论】:

    标签: c# string nunit culture


    【解决方案1】:

    它们可能是不同类型的空间。 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";
    

    【讨论】:

    • 它是字符 160,它似乎是一个空格......我们如何将其合并到我们的“预期”结果中?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 2021-12-15
      • 2020-05-19
      • 2020-12-25
      相关资源
      最近更新 更多