JEXL(Java表达式语言)

展开 层次号 标签

      JEXL(Java表达式语言)
        1  示例
            1.1  对象
                1.1.1  双精度
JEXL脚本var d = new('java.lang.Double', 0d); return '最小正值=' + d.MIN_VALUE + ' 最大值=' + d.MAX_VALUE;
                1.1.2  字串
JEXL脚本var s = new('java.lang.String', 'Hello'); return '包含e:'+ s.contains('e') + ' 长度:' + s.length();
                1.1.3  时间
JEXL脚本var date = new('java.util.Date'); return '当前时间:' + date.toString() + ' 值:' + date.getTime();
            1.2  Math
                1.2.1  欧拉数
JEXL脚本Math.E
JEXL环境jexlContext.set("Math", Math.class);
                1.2.2  圆周率
JEXL脚本Math.PI
JEXL环境jexlContext.set("Math", Math.class);
                1.2.3  绝对值
JEXL脚本Math.abs(-5.611)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.4  平方根
JEXL脚本Math.sqrt(9)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.5  三次方根
JEXL脚本Math.cbrt(27)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.6  
JEXL脚本Math.pow(2,5)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.7  欧拉冥
JEXL脚本Math.exp(2)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.8  自然对数(底为e)
JEXL脚本Math.log(6)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.9  常用对数(底为10)
JEXL脚本Math.log10(6)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.10  余弦
JEXL脚本Math.cos(0)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.11  正弦
JEXL脚本Math.sin(9)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.12  正切
JEXL脚本Math.tan(5)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.13  反正切
JEXL脚本Math.atan(-7.3)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.14  反余弦
JEXL脚本Math.acos(0.5)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.15  反正弦
JEXL脚本Math.asin(0.3)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.16  上舍入
JEXL脚本Math.ceil(4.13)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.17  下舍入
JEXL脚本Math.floor(4.67)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.18  四舍五入
JEXL脚本Math.round(4.83)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.19  随机数
JEXL脚本Math.random( )
JEXL环境jexlContext.set("Math", Math.class);
                1.2.20  大值
JEXL脚本Math.max(1,-3)
JEXL环境jexlContext.set("Math", Math.class);
                1.2.21  小值
JEXL脚本Math.min(1,-3)
JEXL环境jexlContext.set("Math", Math.class);
            1.3  布尔表达式
                1.3.1  数组包含
JEXL脚本var value = 3; var array = [1,'2',3, 'hello']; value =~ array;
                1.3.2  集合不包含
JEXL脚本var value = 2; var set = {1,'2',3, 'hello'}; value !~ set;
                1.3.3  字符串匹配
JEXL脚本var s = 'abc1233hello'; var regex = '\\S*3{2,}\\S*'; var caseInsensitive = true; StringTools.match(s,regex,caseInsensitive);
JEXL环境jexlContext.set("StringTools", mara.mybox.tools.StringTools.class);
                1.3.4  字符串包含
JEXL脚本var s = 'abc1233hello'; var regex = '3{2}'; var caseInsensitive = true; StringTools.include(s,regex,caseInsensitive);
JEXL环境jexlContext.set("StringTools", mara.mybox.tools.StringTools.class);
                1.3.5  与/或/否
JEXL脚本var a = 5; var b = 2; 'hello'.startsWith('hell') and ( a < 9 or b >= 6 ) and not ( a == b );
            1.4  数值处理
                1.4.1  小数位数
JEXL脚本var d = 52362.18903; var scale = 2; DoubleTools.scale(d, scale);
JEXL环境jexlContext.set("DoubleTools", mara.mybox.tools.DoubleTools.class);
                1.4.2  格式
JEXL脚本var d = 52362.18903; var scale = 2; DoubleTools.format(d, scale);
JEXL环境jexlContext.set("DoubleTools", mara.mybox.tools.DoubleTools.class);
                1.4.3  百分数
JEXL脚本var number = 37; var total = 518; var scale = 2; DoubleTools.percentage(number, total, scale);
JEXL环境jexlContext.set("DoubleTools", mara.mybox.tools.DoubleTools.class);
            1.5  时间
                1.5.1  现在
JEXL脚本DateTools.nowString();
JEXL环境jexlContext.set("DateTools", mara.mybox.tools.DateTools.class);
                1.5.2  格式
JEXL脚本var date = new('java.util.Date'); var format = 'yyyy-MM-dd HH:mm:ss.SSS'; DateTools.datetimeToString(date, format);
JEXL环境jexlContext.set("DateTools", mara.mybox.tools.DateTools.class);
            1.6  语句
                1.6.1  循环
JEXL脚本var array = [ 'A', 'B', 'C', 'D' ]; var arrayString = ''; for (var i : 1 .. size (array)) { if (empty (arrayString)) { arrayString = array[i-1]; } else { arrayString += ' , ' + array[i-1]; } } return arrayString;
                1.6.2  函数
JEXL脚本var circleArea = function(r) { Math.PI * r * r } var r = 9.42; return circleArea(r);
JEXL环境jexlContext.set("Math", Math.class);