Как использовать подстроку строки в выражении JXPath

У меня есть список объектов 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? Это вообще возможно без написания собственного расширения?

1 ответ

Решение

Я не мог найти способ, используя нативный JXPath, поэтому в конце концов мне пришлось разработать расширение, которое возвращало бы true, если содержимое первого строкового параметра начиналось с содержимого второго строкового параметра:

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

редактировать

Я не пробовал, но, очевидно, JXPath поддерживает starts-with() функция из XPath.

Другие вопросы по тегам