5

我在我们的问题跟踪器中发现了一张票,其中一位客户报告了一个文本不完整的错误!我们有一个从旧系统(IBM AS400)到现代系统的文本转换程序。我跟踪它并在我的代码上发现了一个未知的行为!!

首先看到这个: 错误全状态

如您所见,第一个空格(char32)之前有两个字符,但是当我删除时Trim(),结果是:

无错误状态

是的,Trim()从一开始就删除 char160!发生了什么事Trim()比需要更有效? 注意:两张图片都是在相同的测试状态下拍摄的。

4

3 回答 3

16

160 是 NBSP(不间断空格),根据文档,Trim将删除所有空格。160 在 Unicode 中被归类为空白。

您可能想改为打电话Trim(' ')

于 2012-06-05T08:16:27.603 回答
4

Trim()删除前导和尾随空白字符,这正是它应该做的

char 160 是一个不间断的空格,它是它消除的空白字符之一。

于 2012-06-05T08:16:43.663 回答
2

Trim 删除所有空格,而不仅仅是空格。如果 char 160 是代码页 1256 中的空格,Trim 将删除它。

以下代码显示 32 和 160 是代码页 1256 中的空白:

        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
于 2012-06-05T08:19:48.650 回答