Вычислить строковое выражение в java

Учитывая, что у меня есть строка ниже: "june1 + august1".

Мне нужно окончательное значение для оценки "julyseptember"

Но окончательное значение в настоящее время оценивается как "july + september".

Что нужно сделать, чтобы строка соответствовала тому, что мне нужно?

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
value = "june1 + august1";
value = value.replaceAll("june1", "july");
value = value.replaceAll("august1", "september");
script = "print(msg)";
engine.put("msg", value);
engine.eval(script);

Обратите внимание на разницу между вашим кодом здесь и String script = "print('july' + 'september')";.

Elliott Frisch 26.07.2018 01:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
987
2

Ответы 2

value = value.replaceAll(" + ", "");

здесь необходимо оценить знак плюса. не заменяется на "" для объединения. значение = "1 + 2"; retval = engine.eval (значение); System.out.println (retval);

Imran 26.07.2018 01:52

@Imran, если вы собираетесь критиковать ответы людей, вам, вероятно, следует изложить свои требования в своем вопросе.

van dench 26.07.2018 02:18

Хотя этот фрагмент кода может решить вопрос, включая объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, и эти люди могут не знать причины вашего предложения кода.

31piy 26.07.2018 04:43

Свяжите две переменные june1 и august1 в контексте сценария вместо того, чтобы вводить их с помощью replaceAll:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");

String script = "june1 + august1";

engine.put("june1", "july");
engine.put("august1", "september");

String result = (String) engine.eval(script);

System.out.println(result);  // will output julyseptember

Другие вопросы по теме