版权声明:转载请随意! https://blog.csdn.net/qq_41723615/article/details/89181689
基本表达式
测试用例:
public class TestELSimple {
public static void main(String[] args) {
ExpressionParser parpser = new SpelExpressionParser();
Expression exp = parpser.parseExpression("'hello ' + 'world'");
EvaluationContext context = new StandardEvaluationContext();
System.out.println(exp.getValue(context));
}
}
1.字面表达式
No | 表达式 | 范例 | 计算结果 |
1 |
字符串 | Expression exp = parpser.parseExpression("'hello ' + 'world'"); | hello world |
Expression exp = parpser.parseExpression("\"hello \" + \"world\"" ); | hello world | ||
2 | 数值型 | Expression exp = parpser.parseExpression("1" ); | 1 |
Expression exp = parpser.parseExpression("1.2" ); | 1.2 | ||
Expression exp = parpser.parseExpression("1.2E10" ); System.out.println(exp.getValue(context,long.class)); |
12000000000 | ||
3. | 布尔型 | Expression exp = parpser.parseExpression("true"); | true |
4. | null类型 | Expression exp = parpser.parseExpression("null"); | null |
2.数学表达式
No | 表达式 | 范例 | 计算结果 |
1 | 四则 | Expression exp = parpser.parseExpression("1 + 2 * 3 / 5"); | 2 |
2. | 求模 | Expression exp = parpser.parseExpression("10 % 3"); | 1 |
Expression exp = parpser.parseExpression("10 MOD 3"); | 1 | ||
3. | 幂运算 | Expression exp = parpser.parseExpression("2 ^ 3"); | 8 |
4. | 除法 | Expression exp = parpser.parseExpression("10 / 2"); | 5 |
Expression exp = parpser.parseExpression("10 DIV 2"); | 5 |
3.关系表达式
No | 表达式 | 范例 | 计算结果 |
1 | 等于 | Expression exp = parpser.parseExpression("1 == 2"); | false |
Expression exp = parpser.parseExpression("1 EQ 1"); | true | ||
2. | 不等于 | Expression exp = parpser.parseExpression("1 != 2"); | true |
Expression exp = parpser.parseExpression("1 NE 1"); | false | ||
3. | 大于 | Expression exp = parpser.parseExpression("10 > 2"); | true |
Expression exp = parpser.parseExpression("10 GT 2"); | true | ||
4. | 大于等于 | Expression exp = parpser.parseExpression("10 >= 2"); | true |
Expression exp = parpser.parseExpression("10 GE 2"); | true | ||
5 | 小于 | Expression exp = parpser.parseExpression("10 < 2"); | false |
Expression exp = parpser.parseExpression("10 LT 2"); | false | ||
6 | 小于等于 | Expression exp = parpser.parseExpression("10 <= 2"); | false |
Expression exp = parpser.parseExpression("10 LE 2"); | false | ||
7. | 区间 | Expression exp = parpser.parseExpression("10 BETWEEN {5,20}"); | false |
4.逻辑表达式
逻辑表达式:与、或、非
No | 表达式 | 范例 | 计算结果 |
1. | 与操作 | Expression exp = parpser.parseExpression("'a' == 'a' && 10 < 5"); | false |
Expression exp = parpser.parseExpression("'a' == 'a' AND 10 < 5"); | false | ||
2 | 或操作 | Expression exp = parpser.parseExpression("'a' == 'a' || 10 < 5"); | true |
Expression exp = parpser.parseExpression("'a' == 'a' OR 10 < 5"); | true | ||
3 | 非操作 | Expression exp = parpser.parseExpression("'a' == 'a' AND !(10 < 5)"); | true |
Expression exp = parpser.parseExpression("'a' == 'a' AND NOT(10 < 5)"); | true |
5.字符串操作
在String类中所有的操作方法都是在开发之中最为常用的。
No | 表达式 | 范例 | 计算结果 |
1 | 连接 | Expression exp = parpser.parseExpression("‘hello ’.concat('world')"); | hello world |
2 | 取内容 | Expression exp = parpser.parseExpression("'hello'[1]"); | e |
3 | 替换 | Expression exp = parpser.parseExpression("'hello'.replaceAll('l','_')"); | he__o |
只要是String类的操作方法记熟练了,那么基本上这些操作都可以直接在表达式之中直接使用。
6.三目运算符
所有的开发之中三目的重要性是不言而喻的,使用三目可以节约代码空间。
No | 表达式 | 范例 | 计算结果 |
1 | 基础三目 | Expression exp = parpser.parseExpression("1 > 2 ? 'halo' : \"world\""); | world |
2 | null处理 | Expression exp = parpser.parseExpression("null == null ? 'halo' : \"world\""); | halo |
Expression exp = parpser.parseExpression("null ?: \"world\""); | world(将null作为了false) | ||
3 | true操作 | Expression exp = parpser.parseExpression("true ? 'halo' : \"world\""); | halo |
Expression exp = parpser.parseExpression("true ?: \"world\""); | true |
7.正则运算
理论上而言,正则运算应该属于String类中的操作,但是由于正则比较重要,所以将其拿出。
No | 表达式 | 范例 | 计算结果 |
1 | 正则 | Expression exp = parpser.parseExpression("'100' matches '\\d{3}'"); | true |
2 | Expression exp = parpser.parseExpression("'100'.matches ('\\d{3}')"); | true |
使用那种方式都是表示正则的操作。
8.括号表达式
利用括号表达式可以实现优先级的变更操作。
No | 表达式 | 范例 | 计算结果 |
1 | () | Expression exp = parpser.parseExpression("((1 + 2) * 5) / 3"); | 5 |
括号在表达式操作之中也是经常使用到的概念。