Comment gérer les espaces dans le chemin du fichier si le dossier contient cet espace?

public static void launchProcess(ssortingng processName, ssortingng arguments, out ssortingng output) { Process p = new Process { StartInfo = { UseShellExecute = false, RedirectStandardOutput = true, FileName = processName, Arguments = arguments } }; p.Start(); output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); } 

Et si mes arguments contiennent les noms de fichier suivants:

 D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS 

Alors j’obtiens l’erreur:

Il aura besoin de guillemets doubles, mais il faudra probablement aussi un @ pour traiter la chaîne mot à mot ( chaîne in extenso ), c’est-à-dire que le “\” a une signification spéciale dans la chaîne; par exemple, \ t signifie un onglet, nous voulons donc ignorer la \

Donc, non seulement les guillemets doubles, mais aussi @

 ssortingng myArgument = @"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"; 

J’utilise les éléments suivants dans la plupart de mes applications (si nécessaire) pour append des guillemets au début et à la fin d’une chaîne s’il y a des espaces.

 public ssortingng AddQuotesIfRequired(ssortingng path) { return !ssortingng.IsNullOrEmpty(path) ? path.Contains(" ") ? "\"" + path + "\"" : path : ssortingng.Empty; } 

EDIT Selon la suggestion, a changé le nom de la fonction et ajouté une vérification de référence nulle.

Exemples..

 AddQuotesIfRequired(@"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"); 

Renvoie "D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"

 AddQuotesIfRequired(@"C:\Temp"); 

Renvoie C:\Temp

 AddQuotesIfRequired(null); 

Renvoie une chaîne vide

Je réalise que c’est un vieux fil, mais pour les personnes qui voient cela après moi, vous pouvez également le faire:

 ssortingng myArgument="D:\\Visual Studio Projects\\ProjectOnTFS\\ProjectOnTFS" 

En évitant les barres obliques, vous n’avez pas à utiliser le symbole @. Juste une autre alternative.