特殊字符的拼写表达式解析问题

问题描述 投票:0回答:1

我正在使用 spring Spel 表达式解析器来评估逻辑表达式,但当字符串包含任何特殊字符时它会失败

这是例子

 private final ExpressionParser parser = new SpelExpressionParser();

 public boolean evaluate(String expressionString) {
        try {

            
            var expression = parser.parseExpression(expressionString);
            var result = expression.getValue(Boolean.class);
          
            return result;
        } catch (ParseException | SpelEvaluationException exception) {
           
            throw exception;
        }

输入字符串如下:

"'Ha'il'.equalsIgnoreCase('迪拜') || 'Ha'il'.equalsIgnoreCase('曼谷') || 'Ha'il'.equalsIgnoreCase('普吉岛') || 'Ha'il'. equalsIgnoreCase('Abha')" || 'Ha'il'.equalsIgnoreCase('Ha'il')

如何考虑特殊字符比较(如 $^'% 等)

spring-boot spring-el
1个回答
0
投票

我相信文档中对此进行了解释:https://docs.spring.io/spring-framework/reference/core/expressions/language-ref/literal.html

字符串可以用单引号 (') 或双引号 (") 分隔。要在单引号括起来的字符串文字中包含单引号,请使用两个相邻的单引号字符。类似地,要包含双引号用双引号括起来的字符串文字内的引号,请使用两个相邻的双引号字符。

所以,显然你的

'Ha'il'
必须是这样的
'Ha''il'
。或者用双引号括起来:
"Ha'il"
.

© www.soinside.com 2019 - 2024. All rights reserved.