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

Dyl*_*tie 5 .net c# 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

"D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
Run Code Online (Sandbox Code Playgroud)

除非我误读了文档:

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

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

Jus*_*ner 4

看起来您可能会遇到最后一个双引号后面有尾随空格的情况。

尝试:

Console.WriteLine(Environment.CommandLine.Trim().Trim('"'));
Run Code Online (Sandbox Code Playgroud)

看看会发生什么。

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

Console.WriteLine(Environment.CommandLine.Trim('"', ' '));
Run Code Online (Sandbox Code Playgroud)

但由于我不知道存在哪种空白,因此我更喜欢使用删除所有空白的重载,而不是猜测那里有哪个字符。

  • 奇妙。您可能认为编写 Environment.CommandLine 的团队会在某个时候与编写 Path.GetDirectoryName 的团队进行交谈......哦,好吧。框架,是吗?多有趣啊。 (2认同)