Пустой результат при разбиении строки по шаблону - PullRequest
3 голосов
/ 10 марта 2019

У меня следующий код:

String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.split("[0-9]+");

В результате у меня есть лишнее пустое значение в operatorsLine:

"", "+", "*"," / "

Hovewer Я желаю результата:

" + "," * "," / "


Как пропустить добавление значения "" в массив, используя метод String.split()?

Ответы [ 3 ]

4 голосов
/ 10 марта 2019

Вы можете использовать что-то вроде:

String[] operatorsLine = Arrays.stream(generalRequest.split("[0-9]+"))
                               .filter(s -> !s.isEmpty())
                               .toArray(String[]::new);
3 голосов
/ 10 марта 2019

Как насчет передачи второго параметра в метод split(String regex, int limit), ограничения его двумя выходными полями и повторного разделения:

String generalRequest = "4+6*12/3";
String[] operatorsLine = (generalRequest.split("\\d+", 2)[1]).split("\\d+");

При первом разделении будет выведен массив: ["", "+6*12/3"], затем возьмите первый индекс и снова разделите его с тем же регулярным выражением.

Окончательное значение operatorsLine будет [+,*,/]

3 голосов
/ 10 марта 2019

В этом случае, где все, что вам нужно, это односимвольные операторы,
удаление всех цифр из строки и разделение на пустую строку в качестве разделителя будет работать:

String generalRequest = "4+6*12/3";
String[] operatorsLine = generalRequest.replaceAll("\\d", "").split("");
System.out.println(Arrays.toString(operatorsLine));

Это печатает:

[+, *, /]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...