提交 bf2d98b2 编写于 作者: T tianqiao

增强单字符串比较问题

上级 529581fb
......@@ -45,6 +45,16 @@ public abstract class Operator extends OperatorBase{
compareResult = ((String)op1).compareTo(op2.toString());
}else if(op2 instanceof String){
compareResult = op1.toString().compareTo((String)op2);
}else if(op1 instanceof Character || op2 instanceof Character){
if(op1 instanceof Character && op2 instanceof Character ){
compareResult = ((Character) op1) .compareTo ((Character) op2);
}else if(op1 instanceof Number){
compareResult = OperatorOfNumber.compareNumber((Number)op1, (int)((Character) op2).charValue());
}else if(op2 instanceof Number){
compareResult = OperatorOfNumber.compareNumber((int)((Character) op1).charValue(),(Number)op2);
}else {
throw new Exception(op1 + "和" + op2 + "不能执行compare 操作");
}
}else if(op1 instanceof Number && op2 instanceof Number){
//数字比较
compareResult = OperatorOfNumber.compareNumber((Number)op1, (Number)op2);
......
package com.ql.util.express.bugfix;
import com.ql.util.express.DefaultContext;
import com.ql.util.express.ExpressRunner;
import com.ql.util.express.IExpressContext;
import org.junit.Test;
public class CompareObjectTest {
@Test
public void test() throws Exception{
System.out.println('a'<98);
ExpressRunner runner = new ExpressRunner();
String[] expList = new String[]{
"'a'<'b'",
"'a'<='b'",
"'a'=='a'",
"test=='a'",
"test<='a'",
"'a'>=test",
};
IExpressContext<String, Object> context = new DefaultContext<String, Object>();
context.put("test",'a'+0);
for(String exp : expList) {
Object result = runner.execute(exp, context, null, true, false);
System.out.println(result);
assert (true == result);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册