Почему Environment.CommandLine.Trim ('"') не удаляет завершающую кавычку? - PullRequest
5 голосов
/ 05 ноября 2010

Следующий код 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"

Если я неправильно читаю документацию :

Строка, которая остается после всех вхождений символов в параметре trimChars, удаляется из начала и конца текущего объекта String.Если trimChars имеет значение null или пустой массив, вместо него удаляются пробельные символы.

не следует ли обрезать завершающие двойные кавычки со второй строки в этом выводе?

Ответы [ 4 ]

4 голосов
/ 05 ноября 2010

Похоже, что вы можете столкнуться с ситуацией, когда после последней двойной кавычки есть пробельные символы.

Попытка:

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

И посмотри, что получится.

Вы также можете передать дополнительные символы в массиве параметров для перегрузки, которую вы уже используете:

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

Но так как я не знаю, какой тип пробела существует, я предпочитаю использовать перегрузку, которая удаляет ВСЕ пробелы, а не угадывать, какой символ там.

0 голосов
/ 05 ноября 2010

Оказывается, в самом конце есть пробел:

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

Этот работает:

        string commandLine = Environment.CommandLine.Trim(new char[] {'"', ' '});
        Console.WriteLine(commandLine);
0 голосов
/ 05 ноября 2010

Удаляет с самого начала и конца, но в вашем случае вы не видите, что там тоже есть пробел =) ion15.vshost.exe "

0 голосов
/ 05 ноября 2010

Как указал Джастин, проблема заключается в том, чтобы оставить пробел в конце.Попробуйте это:

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