Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ScriptEnging在java中计算字符串_Java_Scriptengine - Fatal编程技术网

使用ScriptEnging在java中计算字符串

使用ScriptEnging在java中计算字符串,java,scriptengine,Java,Scriptengine,下面是我的代码,使用户输入hello或鼠标并搜索字符串(稍后我将在更大的文本文件上使用) 我使用它来创建一行使用contains方法的Java代码。之后,我需要对它进行评估。我找到了一些使用脚本引擎的帮助,但我一直遇到这样的错误:线程“main”javax.Script中的异常。ScriptException:ReferenceError:“name”未在第1行定义我要计算的代码的输出是name.contains(“hello”)| name.contains(“鼠标”) 任何帮助都会很好。谢谢

下面是我的代码,使用户输入hello或鼠标并搜索字符串(稍后我将在更大的文本文件上使用)

我使用它来创建一行使用contains方法的Java代码。之后,我需要对它进行评估。我找到了一些使用脚本引擎的帮助,但我一直遇到这样的错误:
线程“main”javax.Script中的异常。ScriptException:ReferenceError:“name”未在第1行定义
我要计算的代码的输出是
name.contains(“hello”)| name.contains(“鼠标”)

任何帮助都会很好。谢谢

public static void main(String args[]) throws ScriptException {


    String searchString = "name";
    String terms = "(hello) || (mouse)";

    String command = "";
    //multiple commands
    if(terms.contains("(") && terms.contains(")") && terms.contains("[") && terms.contains("]")){
        command = terms.replace(")","\")");
        command=command.replace("(", searchString + ".contains(\"");
        command = command.replace("[","(");
        command = command.replace("]",")");
    }
    //only ands/ only ors
    else {
        command = terms.replace("(", searchString + ".contains(\"");
        command = command.replace(")", "\")");
    }


    System.out.println(command);
    String name = "mousehellonamepe";


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

    Object result = engine.eval(command);
    System.out.println(result);

你到底想做什么

=======更新====== 首先,字符串术语应该是一个列表

让它:

ArrayList<String> searchTerms = new ArrayList();
这将输出以下内容:

Our list contains the word mouse
代码应该如下所示:

public static void main(String args[]) throws ScriptException {

 ArrayList<String> searchTerms = new ArrayList();

arr.add("Hello");
        arr.add("Mouse");
        arr.add("Bike");
        arr.add("House");
boolean mouseExists = arr.contains("Mouse");

    if (ans)
            System.out.println("Our list contains the word mouse");
        else
            System.out.println("Our list does not contain the word mouse");

}
publicstaticvoidmain(字符串args[])引发脚本异常{
ArrayList searchTerms=新建ArrayList();
arr.add(“你好”);
arr.add(“鼠标”);
arr.add(“自行车”);
arr.add(“房屋”);
布尔mouseExists=arr.contains(“鼠标”);
如果(ans)
System.out.println(“我们的列表包含单词mouse”);
其他的
System.out.println(“我们的列表不包含单词mouse”);
}

我用它来评估命令。
上面的链接提供了所有的解释

将输入作为搜索词,使其成为一段java代码,然后使用contains方法搜索字符串(名称)以查看是否有这些搜索词。请使用评论部分。我无法使用评论部分,因为我需要达到级别50:)让我知道这是否有帮助?谢谢,但是我需要根据用户的需要使用&&和| |。此外,输入需要来自操作用户,因此我不能简单地使用列表。谢谢你!
public static void main(String args[]) throws ScriptException {

 ArrayList<String> searchTerms = new ArrayList();

arr.add("Hello");
        arr.add("Mouse");
        arr.add("Bike");
        arr.add("House");
boolean mouseExists = arr.contains("Mouse");

    if (ans)
            System.out.println("Our list contains the word mouse");
        else
            System.out.println("Our list does not contain the word mouse");

}
Interpreter i = new Interpreter();

    i.set("searchThis", searchString);
    i.set("answer", i.eval(command));
    Boolean answer2 = (Boolean) (i.get("answer"));