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。这样就可以控制这些函数中使用的字符。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |