这两个字符串有啥区别?
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】:很可能是一个空白字符,而不是空格,以避免标签等在启用自动换行时将数字分成两部分。
【讨论】:
以上是关于这两个字符串有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
从函数返回 char* 和 char[] 有啥区别? [复制]
FormUrlEncodedContent 和查询字符串有啥区别?