String mit Befehl und Parametern zu Array für ProcessBuilder parsen

  • Themenstarter Themenstarter JavaBernd
  • Beginndatum Beginndatum
J

JavaBernd

Hallo Zusammen,

ich führe zur Zeit mit einem ProcessBuilder bereits ein Programm auf meinem Computer mit mehreren Parametern aus. Den Befehl inklusive Parameter habe ich als string vorliegen.
z.B. den String "cmd /c dir"
Nur habe ich ein paar Parameter mehr... und die enthalten unter anderem nicht nur Leerzeichen (was man ja durch --parameter="dsdfs sdfsf sdfsf sdfsdf dsdfsd" beheben kann) sondern auch Newlines (also sowas wie:
--parameter=test
nachricht
mit new lines

Das ganze kann ich aber nicht mehr direct als String übergeben, da mir sonst nur der Teil bis zum ende von --parameter=test ausgeführt wird. Der Rest wird nicht dran gehängt.

Wenn ich den Befehl von Hand in ein String Array zerlege, also {"cmd", "/c", "dir"} (nur halt mit meinem langen Befehl mit vielen Parametern), dann geht's, dann werden die newlines übergeben.

Meine Frage ist nun, wie ich den Befehlsstring, den ich als ganzes vorliegen habe, in ein Array zerlegen kann. Gibts dafür was fertiges? Oder muss ich das selbst mit regex machen? Mein Problem bei regex ist nur leider, dass die Anzahl der groups sich nicht variable erweitert. Oder mach ich da was falsch?

Danke schon mal im voraus******
Grüße, Java
 
Java:
import java.util.StringTokenizer;


/**
 * @author Herbertus
 * 
 */
public class Test {

    public static void main(String[] args) {
    
       String s = "Dies ist ein ganz toller Test mit vielen Leer- und Sonderzeichen !!:) Eventuell geht ja auch ein Zeilensprung \n und hob..geschafft!";
       
       // Teile String s an jedem Leerzeichen in ein Token
       StringTokenizer st = new StringTokenizer(s, " ");
       
       // Solange du Tokens hast, zeig sie mir
       while(st.hasMoreTokens()){
          System.out.println(st.nextToken());
       }
       
       
    }
 
}

Müsstest halt dann anstatt sie dir ausgeben lassen, in ein Array schreiben. Hoffe es hilft dir...bzw. du kannst es gebrauchen.
 
Hallo Zusammen,

ich habs inzwischen geschafft den String per regex zu zerlegen. Aber ich finde die Methode etwas unbefriedigend, da ich eigentlich davon ausgehe, dass soetwas doch häufiger das Problem sein müsste...

@Herbertus:
ich will ja nicht nur bei jedem space alles getrennt haben, sondern Parameter der Form --parameter="sdf dsdf dsf" sollen ja zusammenbleiben...

MfG
Java
 
Zurück