Wir haben ein Java-Programm, bei dem eine Datei während des Prozesses sortiert werden soll. Die betreffende Datei kann jedes druckbare Zeichen enthalten, das über die Tastatur eingegeben werden kann. Wir sind in der Lage, die Sortierung bei einem standardmäßigen einstelligen Begrenzungszeichen OK auszuführen, aber wenn die Sortierung auf dieses Zeichen stößt, wird es falsch geparst. Wir möchten entweder ein Tabulator-Begrenzungszeichen oder ein mehrstelliges Trennzeichen verwenden, damit die Datei unabhängig vom Inhalt der Daten korrekt sortiert wird. Die Befehlszeichenfolge wird dynamisch erstellt und zur Ausführung an die Shell übergeben, wie unten gezeigt.
execStr = new StringBuffer("/usr/bin/sort -n +1n -2 +0n -1 -o " + outputFile.toString() + " -t " + DELIMITER + " " + outputFile.toString()); Process runProc = Runtime.getRuntime().exec (execStr.toString());
Wenn wir das $ und die Häkchen einfügen, um das Trennzeichen zu umschließen, findet die Sortierung nicht die gewünschten Spalten und sortiert nach der ersten Spalte, was uns vor ein Problem stellt, wenn wir das Tabulatorzeichen als $'\t'
. Wir haben versucht, Zeichen außerhalb des druckbaren Bereichs zu verwenden, wie z. B. $'Ç'
(hex C7), aber der Sortiermechanismus Java String veröffentlicht ein Fragezeichen für das Zeichen wie $'?'
was bei uns natürlich nicht funktioniert. Es scheint, dass die Art und Weise, wie Java mit Strings umgeht und wie sortieren Sie zu lesen, macht uns zu schaffen. Ist noch jemand auf dieses Problem gestoßen und wenn ja, wie haben Sie es gelöst? Idealerweise wäre die Verwendung eines mehrstelligen Trennzeichens für uns das Beste, aber wir nehmen das Tabulatorzeichen, wenn wir es zum Laufen bringen können.
Vielen Dank im Voraus, Mike