2014-05-02 1 views
3

J'ai besoin de simuler une ligne de commande, donc j'ai besoin de changer la chaîne dans les arguments [] de la même manière que d'exécuter un programme avec des paramètres dans la méthode principale. J'utilise clon commun, mais il n'a pas de méthode d'analyse, il attend déjà un tableau de chaîne.Comment créer des args [] à partir d'une chaîne en java

je pensais, je viens d'utiliser Split, mais malheureusement, regardez ce problème:

String input = "-command \"This is a long parameter\""; 
String args[] = input.split(" "); 
//args[0] = -command 
//args[1] = "This 
//args[2] = is 
//etc. 

Si vous utilisez ce -command "This is a long parameter" en tant que paramètre à votre méthode principale, vous obtenez ce qui suit:

//args[0] == -command 
//args[1] == This is a long parameter 

Donc, toute suggestion comment le faire? Le deuxième problème est de trouver ceci sur google, parce que chaque thread explique ce qui est args [] est, pas comment l'obtenir à partir de la chaîne.

+0

Avez-vous essayé input.split ("\" "), comme \" est delimiter dans votre chaîne –

+0

@BhushanKawadkar - eh bien, il peut être la bonne direction, mais j'ai deux délimiteurs - le premier est '" ', le second est' '(espace) ... – libik

+0

@Keppil - merci beaucoup, c'est exactement ce que je cherchais. – libik

Répondre

1

Vous pouvez utiliser regex pour couper votre chaîne.

for (String s : "hello \"world this is\" a string" 
     .split(" (?=\")|(?<=\")\\s")) 
    System.out.println(s); 

le code ci-dessus affiche:

hello 
"world this is" 
a string 
Questions connexes