同事说decimal转换不了,仔细看了,没有问题,如图:
红色都是有问题的,肉眼是看不出任何问题的。
用正则也把空白,常用的回车换行符什么的都替换,依然转换不了。
后来,我打印一下字串的长度,发现总是比肉眼观察到的多一位,于是就复制了这个字符,直接替换,转换成功!
来看看下面的代码:
1 2 3 4 5 6 7 |
string tt1 = "941501"; string tt3 = "941501"; // 你没看错,以上两个值是不相等的,在tt1的后面有一个神秘的空白字符。 decimal.TryParse(tt1.Replace("", ""), out var tt2); // 别以为我是把空替换为空,前面的双引号里是有个看不见的字符的 MessageBox.Show(tt2.ToString(CultureInfo.InvariantCulture)+"\n"+(tt1.Length+"-"+tt3.Length)); |
通过转码,神秘字符转码后:
UrlEncode:%E2%80%AC
十六进制:2623383233363B