有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为表达式字符串设置优先级

我有下面的表达式,我想为Java中的每个条件设置括号“()”。我想转换下面的表达式

String expression = "((firstname = john AND Lastname = Eleven) OR (salary = 15000 AND location = Mexico OR (firstname = mathew AND lastname = Thirteen)))";

作为

String expression = "(((firstname = john) AND (Lastname = Eleven)) OR ((salary = 15000) AND (location = Mexico) OR ((firstname = mathew) AND (lastname = Thirteen))))";

有没有最好的方法来实现这一点


共 (1) 个答案

  1. # 1 楼答案

    如果想要实现的是添加括号,那么可以创建一个正则表达式来匹配text[space]=[space]text,然后使用String#replaceAll()方法将其包装在括号中。可以使用以下正则表达式实现匹配:(\w+ = \w+)

    String expression = "((firstname = john AND Lastname = Eleven) OR (salary = 15000 AND location = Mexico OR (firstname = mathew AND lastname = Thirteen)))";
    String replaceAll = expression.replaceAll("(\\w+ = \\w+)", "($1)");
    System.out.println(replaceAll);
    //(((firstname = john) AND (Lastname = Eleven)) OR ((salary = 15000) AND (location = Mexico) OR ((firstname = mathew) AND (lastname = Thirteen))))
    

    如果您不需要匹配=符号,而是需要匹配其他运算符,则可以增强正则表达式以包括><>=<=!=(\w+ (=|>|<|>=|<=|!=) \w+)或任何其他你想要的