C # string manipulant comment obtenir le chemin et les arguments d'une chaîne
Question
J'ai une chaîne avec des guillemets autour du chemin, comme suit:
" C: \ Fichiers de programme (x86) \ Lecteur Windows Media \ wmplayer.exe " arg1 arg2
Si j’utilise Text.Split(new Char[] { ' ' }, 2);
, j’obtiens le premier espace.
Comment obtenir le chemin et les arguments?
La solution
Essayez de scinder les guillemets doubles (Text.Split (new Char [] {'/ "'}, 3);) puis de prendre la dernière chaîne de ce tableau et de scinder à nouveau sur l'espace.
string[] pathAndArgs = Text.Split(new Char[] { '/"' }, 3);
string[] args = pathAndArgs[2].Split(new Char[] { ' ' }, 2);
J'ai peut-être une erreur de syntaxe, mais vous obtenez ce que je veux dire.
Autres conseils
Utilisez une expression régulière telle que: ("".*?"")|(\S+)
Votre code ressemblerait donc à quelque chose comme:
Regex r = new Regex(@"("".*?"")|(\S+)");
MatchCollection mc = r.Matches(input);
for (int i = 0; i < mc.Count; i++)
{
Console.WriteLine(mc[i].Value);
}
Faites text.split et revenez à la fin du tableau.
var input = "C:\\blah\\win.exe args1 args2";
var array = input.split(' ');
var arg1 = array[array.length -2];
var arg2 = array[array.length -1];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow