2011-04-04 20 views
20

He la siguiente cadena, lo que yo quiero para ejecutar como un proceso:¿Cómo usar una cadena con comillas dentro de ella?

Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m "SHARP MX-5500N PS" /h "Windows NT x86" /v 3 /f sn0hwenu.inf

Sin embargo, dada la presencia de las comillas, no puedo insertar esta cadena en C# para que se compile, manteniendo toda la estructura original. ¿Cómo debo solucionar esto? Es un poco complicado ya que hay comillas dentro de la cadena.

+4

Use \ "escapar". – Lloyd

+0

@Lloyd => respuesta. –

+0

Sí, esto se denomina 'escape' y usualmente se prefija el carácter en cuestión con una barra diagonal inversa (\). –

Respuesta

3
string s = "Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m \"SHARP MX-5500N PS\" /h \"Windows NT x86\" /v 3 /f sn0hwenu.inf"; 
2

que tienen que escapar las comillas utilizando \. tener una cadena que dice: Hello "World" debe escribir "Hello\"World\""

8

Se puede retener @ delante de la definición de cuerda y poner dos ":

string myString = @"Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m ""SHARP MX-5500N PS"" /h ""Windows NT x86"" /v 3 /f sn0hwenu.inf" 

Puede leer más acerca de escapar caracteres en las cadenas en este artículo :

http://www.yoda.arachsys.com/csharp/strings.html

28
string whatever = "Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m \"SHARP MX-5500N PS\" /h \"Windows NT x86\" /v 3 /f sn0hwenu.inf"; 

o

string whatever = @"Rundll32 Printui.dll,PrintUIEntry /ia /K /q /m ""SHARP MX-5500N PS"" /h ""Windows NT x86"" /v 3 /f sn0hwenu.inf"; 
+0

-1 porque a alguien no le gusto, supongo (Acabo de recibir un voto negativo). – rsenna

0

También puede usar siempre Convert.ToChar (34), siendo 34 el ASCII de ".

por ejemplo:

gitInfo.Arguments = @"commit * " + "-m" + Convert.ToChar(34) + messBox.Text + Convert.ToChar(34); 

es igual a:

commit * -m "messBox.Text"; 
Cuestiones relacionadas