代码之家  ›  专栏  ›  技术社区  ›  Dylan Beattie

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

  •  5
  • Dylan Beattie  · 技术社区  · 15 年前

    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参数中所有字符出现后保留的字符串将从当前字符串对象的开始和结束处删除。如果trimChars为空或为空数组,则将删除空白字符。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Justin Niessner    15 年前

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

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

    看看会发生什么。

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

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

        2
  •  0
  •   Winston Smith    15 年前

    正如Justin所暗示的,尾随空格是问题所在。试试这个:

    Console.WriteLine(Environment.CommandLine.Trim( new[] {'"', ' '} ));
    
        3
  •  0
  •   Singleton    15 年前

    它从开始和结束处移除,但在您的情况下,您看不到也有空白=) ion15.vshost.exe“

        4
  •  0
  •   BrokenGlass    15 年前

    结果在最后有一个空间:

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

    这个有效:

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