为什么Environment.CommandLine.Trim('“')不删除尾随引用?

时间:2010-11-05 13:02:48

标签: c# .net clr trim

以下C#代码:

using System;
namespace TrimTest {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine(Environment.CommandLine);
            Console.WriteLine(Environment.CommandLine.Trim('"'));
            Console.ReadKey(false);
        }
    }
}

产生以下输出:

"D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"

除非我误读了the documentation

  

从trimChars参数中所有出现的字符后剩余的字符串将从当前String对象的开头和结尾删除。如果trimChars为null或为空数组,则会删除空格字符。

不应该从该输出中的第二个字符串中修剪尾部双引号吗?

4 个答案:

答案 0 :(得分:4)

看起来你可能会遇到上一次双引号后有空格的情况。

尝试:

Console.WriteLine(Environment.CommandLine.Trim().Trim('"'));

看看会发生什么。

您还可以将参数数组中的额外字符传递给您已经使用的重载:

Console.WriteLine(Environment.CommandLine.Trim('"', ' '));

但由于我不知道有什么类型的空格,我更喜欢使用删除所有空格的重载而不是猜测那里有哪个字符。

答案 1 :(得分:0)

正如贾斯汀所提到的,尾随空白就是问题所在。试试这个:

Console.WriteLine(Environment.CommandLine.Trim( new[] {'"', ' '} ));

答案 2 :(得分:0)

它从一开始就结束,但在你的情况下,你不能看到还有一个空格=) ion15.vshost.exe“

答案 3 :(得分:0)

原来最后有一个空间:

        Console.WriteLine(Environment.CommandLine);
        Console.WriteLine(Environment.CommandLine.Trim('"'));

这个有效:

        string commandLine = Environment.CommandLine.Trim(new char[] {'"', ' '});
        Console.WriteLine(commandLine);