gpt4 book ai didi

java - ScriptEngineManager 可以给我它刚刚用 Java 编译的 Javascript 函数的名称吗

转载 作者:行者123 更新时间:2023-11-28 09:42:32 28 4
gpt4 key购买 nike

如何找到用 Java 解析的 javascript 函数的名称。我允许用户输入 Javascript 函数(在 JTextArea 中),然后我使用 ScriptEngineManager 来确认它是有效的语法,如下所示:

public final boolean isFunctionValid(String function)
{
try
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
Object result = engine.eval(function);
}
catch(ScriptException se)
{
return false;
}
return true;
}

工作正常,但我还想知道函数的名称,以便我可以为函数分配一个与函数名称匹配的名称。如果 ScriptEngineManager 为我做这件事,我会更喜欢它,而不是我尝试通过解析变量函数来解决它,并考虑到该方法的所有固有风险

编辑由于似乎没有办法正确执行此操作,因此我使用对我有用的正则表达式创建了两个检查。

    protected static Pattern functionNameMatch;
protected static Pattern multipleFunctionsMatch;
static
{
functionNameMatch = Pattern.compile("function[ ]+([a-zA-Z0-9]*)[ ]*\\(");
multipleFunctionsMatch = Pattern.compile("function[ ]+");
}


protected boolean isOneFunction()
{
Matcher m = multipleFunctionsMatch.matcher(function.getText());
if(m.find())
{
if(m.find())
{
return false;
}
return true;
}
return false;
}

protected String deriveNameFromFunction()
{
Matcher m = functionNameMatch.matcher(function.getText());
if(m.find())
{
return m.group(1);
}
return "";
}

最佳答案

由于这在 JavaScript 中是不可能的,所以我使用模式匹配进行了一些额外的检查

protected static Pattern functionNameMatch;
protected static Pattern multipleFunctionsMatch;
static
{
//TODO this method only works if all parameters are put on first line of function, otherwise declares function
//is invalid
functionNameMatch = Pattern.compile("function[ ]+([a-zA-Z0-9]*[ ]*\\(.*\\))");
multipleFunctionsMatch = Pattern.compile("function[ ]+");
}

protected boolean isOneFunction()
{
Matcher m = multipleFunctionsMatch.matcher(function.getText());
if(m.find())
{
if(m.find())
{
return false;
}
return true;
}
return false;
}

protected String deriveNameFromFunction()
{
Matcher m = functionNameMatch.matcher(function.getText());
if(m.find())
{
return m.group(1);
}
return "";
}

关于java - ScriptEngineManager 可以给我它刚刚用 Java 编译的 Javascript 函数的名称吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204811/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com