String.Trim()删除超过需要?

时间:2012-06-05 08:11:56

标签: c# string

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

首先看到这个: bug-full state

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

bug-free state

是的,Trim()从头开始删除char160! Trim()工作得多于什么? 注意:两张图片均以相同的测试状态捕获。

3 个答案:

答案 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