Вы должны быть в состоянии сделать что-то вроде этого:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("groovy");
removeSpecialChars = ".replace('a','')";
text = "Dia";
engine.put("first", text);
result = engine.eval("first" + removeSpecialChars);
System.out.println(result);
Вызывая engine.put("first", text);
, вы создаете переменную first
со строкой Dia.replace('a','')
в качестве значения. Оценка этой переменной - просто noop, поэтому вы снова получаете то же значение, что и результат.
Вы также можете сократить вышеупомянутое до
result = engine.eval("\"" + text + "\"" + removeSpecialChars);
Попробуйте на glot.io: https://glot.io/snippets/f4jyrbt92h
Однако вы, вероятно, должны быть очень осторожны с теми операциями, которые вы разрешаете, и должны убедиться, что злонамеренный ввод пользователя не испортит всю вашу систему. Например, если пользовательский ввод .replace('a',''); file("C:/Windows/").delete();
, это может быть то, что вы не хотите выполнять. В целом, принятие пользовательского ввода для динамического выполнения кода делает вашу систему легкой мишенью для всех видов эксплойтов.