我在问题跟踪器中找到了一张票,其中一位客户报告了一个文本不完整的错误! 我们有一个文本转换程序,从一个遗留系统(IBM AS400)到现代系统。 我跟踪它并在我的代码中发现了一个未知的行为!!
首先看到这个:
如您所见,在第一个空格(char32)之前有两个char,但是当我删除Trim()
时,结果是:
是的,Trim()
从头开始删除char160! Trim()
工作得多于什么?
注意:两张图片均以相同的测试状态捕获。
答案 0 :(得分:16)
160是NBSP(非中断空格),根据文档,Trim
将删除所有空格。 160在Unicode中被分类为空格。
您可能希望改为呼叫Trim(' ')
。
答案 1 :(得分:4)
Trim()
删除了前导和尾随空白字符,这就是what it is supposed to do。
char 160是一个非中断空格,它是它消除的空白字符之一。
答案 2 :(得分:2)
修剪删除所有空白区域,而不仅仅是空格。如果char 160是代码页1256中的空格,Trim将删除它。
以下代码显示代码页1256中的32和160是空格:
var chars = new byte[] {32,160,164 };
var enc=Encoding.GetEncoding(1256);
var str=enc.GetString(chars);
foreach (var character in str)
{
Console.WriteLine("{0}:{1}", character, Char.IsWhiteSpace(character));
}
Console.ReadKey();
返回:
True
True
False