Как использовать подстроку строки в выражении 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.