2010-11-05 10 views
5

El siguiente código C#:?Environment.CommandLine.Trim ('"') no retire la cita arrastrando

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

produce el siguiente resultado:

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

A menos que esté leyendo mal the documentation:

La cadena que queda después de todas las apariciones de los caracteres en el parámetro trimChars se elimina desde el inicio y el final de el objeto String actual. Si trimChars es nulo o una matriz vacía, en su lugar se eliminan los caracteres de espacio en blanco.

No debería el trailing comillas dobles recortarse de la segunda cadena en que la producción?

Respuesta

4

Parece que podría estar en una situación en la que hay espacios en blanco detrás de la última comilla doble.

Probar:

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

y ver qué pasa.

También puede pasar caracteres adicionales en la matriz de parámetros a la sobrecarga ya está usando:

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

Pero ya no sé qué tipo de espacios en blanco no hay, yo prefiero usar la sobrecarga que elimina TODOS los espacios en blanco en lugar de adivinar qué personaje está allí.

+2

maravilloso uno pensaría que el equipo que escribió el Medio Ambiente .CommandLine habría hablado con el equipo que escribió Path.GetDirectoryName en algún momento ... bueno. Marcos, ¿eh? Qué divertido. –

0

Como alude Justin, el espacio en blanco al final es el problema. Prueba esto:

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

Sí, eso es todo. Por cierto, cuando un método takens param char [] args, no necesita volver a crear explícitamente una matriz; simplemente puede pasar Trim ('"', ''). –

0

Se elimina desde el extremo principio y, en su caso, pero u no puede ver que hay un espacio en blanco demasiado =) ion15.vshost.exe"

0

Resulta que hay una espacio en el final:

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

Esta funciona:.

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