Итак, в основном, я хочу успешно передать произвольную строку в java, которая может содержать специальные символы (например, вкладки). Вот пример этого кода:Передача символа табуляции в качестве аргумента командной строки в Java
String tab = "\t";
//String tab = args[0];
String full = "hi"+tab+"hi"+tab+"bye";
String[] parts = full.split(tab);
String print = "";
for (String s : parts) {
print += s + tab;
}
print = print.substring(0, print.length()-tab.length());
System.out.println(print);
Сплит успешно восстанавливает детали независимо от того, как определяется вкладка переменной. Однако, когда он действительно печатается, определение вкладки вручную (без комментариев) выводит ее как ожидалось, с символами табуляции. Однако прохождение через командную строку приводит к тому, что она фактически печатает «\ t» (так же, как если бы строка была «\\ t», например).
Я использую bash и буду рад любым идеям, основанным на bash, хотя было бы более счастливым, если бы оно также включало общее объяснение происходящего. Почему регулярное выражение одинаково, в то время как строковый литерал отличается?
Баш вызов программы:
ARGS="$X $Y $Z \t"
java -cp $CLASSPATH $MEM $PROGRAM $ARGS 2> "${PROGRAM##*.}-error.log" > "${PROGRAM##*.}-out.log"
Ответ, представленная здесь, на самом деле в основном работает для моих целей, является достаточно удобным для чтения, и вообще только не на довольно необычные вещи: «\\\ T», для экземпляр: https://gist.github.com/uklimaschewski/6741769
я не получаю ваш вопрос. Вы хотите, чтобы ваш Java-код вызывал другую программу и передает ей «реальные» вкладки? – GhostCat
Возможно, вам следует опубликовать, как вы выполнили этот код java в bash – ymonad
@bhaal, можете ли вы добавить образец вызова из используемой командной строки? – alainlompo