2013-03-07 2 views
1

Пожалуйста, помогите написать шаблон для разделения командной строки только на пространствах, которые лежат между командой и ее аргументы:Java. Написать шаблон для разделения командной строки на пробелы

мой код:

String commands = "gedit /home/ant/Documents/Txt Books/1.txt /home/ant/Documents/1.txt"; 

String[] arrCommands = Pattern.compile("\\\s[^\\\s\\\w]").split(commands); 

for (int i = 0; i < arrCommands.length; i++) { 
    System.out.println(arrCommands[i]); 
} 

программа дает следующий результат:

Gedit
дома/муравей/Документы/Txt Книги/1.txt
дома/муравей/Документы/1.txt

и нужно сделать так:

Gedit
/главная/муравей/Документы/Txt Книги/1.txt
/home/ant/Documents/1.txt

ответ

0

Вы должны использовать это регулярное выражение для разделения

\\s+(?=[^\\w\\s]) 

В своем регулярном выражении [^\\\s\\\w] съедал первый характер после того, как space..hence результат ..

Использование lookahead, который будет проверять только шаблон, но не съесть его ...

+0

спасибо, этот шаблон делает то, что должно быть. – Wayne

1

Также можно попробовать разбить строку с помощью раскола() метод

, например:

Пожалуйста, помогите написать шаблон для разделения командной строки только на пространствах, которые лежат между командой и ее аргументами:

String commands = "gedit /home/ant/Documents/Txt Books/1.txt /home/ant/Documents/1. 
String[] commandsToArray=commands.split("\\s+");//this wil ignore multiples whitespaces 
+0

результат GEdit главная/муравей/Документы/Txt Книги/1.txt дома/муравей/Документы/1.txt – Wayne

+0

необходимость: Gedit /главная/муравей/Документы/Txt Книги/1.txt /дома/муравей/Документы/1.txt – Wayne

+0

Просто используйте 'commands.split (" ")'? Работал для меня ... – fgysin

Смежные вопросы