这两个字符串有啥区别?

Posted

技术标签:

【中文标题】这两个字符串有啥区别?【英文标题】: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 字符很了解。我们改变了我们的预期结果,现在每个单元测试都通过了。

【问题讨论】:

【参考方案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】:

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

【讨论】:

以上是关于这两个字符串有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Python 中的 !r 和 %r 有啥区别?

从函数返回 char* 和 char[] 有啥区别? [复制]

回文排列和排列有啥区别? [关闭]

FormUrlEncodedContent 和查询字符串有啥区别?

根据你的理解,简要说明使用双等号(==)和equals()方法判断两个字符串是不是相等有啥区别

EXCEL中双引号和单引号中的数字有啥区别