Как разделить строку с помощью базовых разделителей, таких как «+», «-», «*» и «/», не используя точку в качестве разделителя? - PullRequest
1 голос
/ 16 марта 2012

Мне нужно разделить строку, которая будет входом калькулятора.Я хочу разделить его на два массива, используя функцию разделения в Java.В первом массиве должны быть только номера строк (включая числа с десятичными знаками).Второй должен включать только математические операторы, такие как «+ - * /».В настоящее время это мой код:

String[] numbers = s.split("[[+-/*]&&[^.]]");
String[] operators = s.split("[^*/+-]");

Кажется, что я в состоянии разбить строку на массив отдельных чисел совершенно нормально (даже с десятичными точками), но я не могу разделитьСтрока в отдельные операторы, если где-либо с десятичной точкой есть цифры (хотя это работает иначе).

Пример: Я хочу, чтобы "9.0 / 3 + 2.3" стало {/,+casts.

Что я должен изменить в своем регулярном выражении (для второй строки кода), чтобы получить желаемый результат?Все, что я пробовал, не сработало.

1 Ответ

3 голосов
/ 16 марта 2012

Попробуйте это:

String[] numbers = s.split("[[+-/*]&&[^.]]");

ArrayList<String> ops = new ArrayList<String>();
for (String op : s.split("[^*/+-]"))
    if (!op.isEmpty())
        ops.add(op);
String[] operators = ops.toArray(new String[0]);
...