|
|
1
12
我怀疑你当前的文化使用了一个有趣的“千”分隔符-U+00A0,它是不间断空格字符。老实说,那不是一个完全不合理的千人分隔符…这意味着您不应该显示这样的文本:
相反,你会得到
在我的盒子里,我得到的是“1023”。你想要你的
所以我可以跑:
等。 如果要测试所得到的字符串,可以使用:
|
|
|
2
4
Unicode 160,以utf8表示 不 由单字节160表示,但由两个字节表示。如果不检查,我敢打赌是194+160。 事实上,超过127的任何Unicode码位都由多个字节表示。 我猜你的cultureInfo使用一个不间断的空格(160)作为一个数千个分组分隔符,而不是像你自己输入的那样简单的空格(32)。 |
|
|
3
2
194,160是代码点160的utf8:不间断空格-
这是有道理的,你不希望一个数字被认为是几个单词。 简而言之,你的测试揭示了一个有缺陷的假设——太好了!但是,就单元测试而言,您的测试存在问题;在转换为字符串或从字符串转换为字符串时,应始终包含CultureInfo对象-否则,根据登录用户的区域性设置,单元测试可能会失败。您需要一种特殊形式的字符串格式-确保您明确地声明您期望的文化信息。 |
|
4
2
也许您可以在
|
|
|
5
1
160是一个不间断的空格,这是有道理的,因为你不希望你的号码在两行之间被分割。但是194…哦,是的。UTF8双字节。 |
|
|
6
0
首先,.NET中的所有字符串都是Unicode,因此获取utf8字节是无用的。其次,在比较字符串时,应指定区域性信息,在使用string.format时,应使用iformatProvider。这样就可以控制这些函数中使用的字符。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |