我有一个包含航班号和登机口号的Java对象的列表:

public class Flight {
  public String flightNumber;
  public String gateNumber;
}


出于这个问题的目的,我的列表包含具有以下航班号和登机口号的对象:

"AA123"  "10"
"BB789"  "11"
"BB124"  "10"
"AA456"  "12"


我知道,如果我想选择门10的所有对象,则可以使用以下JXPath表达式(有效):

.[gateNumber = "10"]


我需要做的是选择10号登机口的所有对象,其航班号以“ AA”开头。

我已经尝试了以下方法,但是它们都不起作用:

.[gateNumber = "10" and flightNumber.startsWith("AA")]
.[gateNumber = "10" and flightNumber.substring(0, 2) = "AA"]
.[gateNumber = "10" and substring(flightNumber, 0, 2) = "AA"]
.[gateNumber = "10" and substring($flightNumber, 0, 2) = "AA"]


我的JXPath表达式应该是什么?如果不编写自定义扩展,是否有可能?

最佳答案

我找不到使用本机JXPath的方法,所以最后我必须开发一个扩展,如果第一个字符串参数的内容以第二个字符串参数的内容开头,则返回true:

.[gateNumber = "10" and utils:startsWith(flightNumber, "AA")]


编辑

我没有尝试过,但是显然JXPath支持XPath的starts-with()函数。

关于java - 如何在JXPath表达式中使用字符串的子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31821635/

10-10 03:52