String Array в разбиении с разделителем и значением - PullRequest
0 голосов
/ 13 мая 2019

У меня есть требование разделить параметр запроса в массиве строк.

Предположим, я получаю запрос таким образом

<API_PATH>?reqPramName=gender=m*AND*age<30*OR*age>60*AND*address=India

Теперь я хочу создать два набора массивов: 1) массив имени / значения запроса 2) и / или массив соединения

Как

Array name/value 
------------------
0  | gender=MAN
------------------
1  | age<30
------------------
2  | age>60
------------------
3  | address=India

Array and/or
------------------
0  | AND
-----------------
1  | OR
----------------
2  | AND

Я делаю операцию разделения, например….

filter.split("AND|OR")

Для имени / значения, которое работает должным образом, но может ли кто-нибудь помочь мне построить 2-й массив (и / или массив) из параметра запроса?

Моя идея состоит в том, чтобы сгенерировать предикат в зависимости от этих двух массивов путем сопоставления этих двух массивов, например ...

1stArray[0]2ndArray[0]1stArray[1]2ndArray[1]

что-то в этом роде ...

Может любойподскажите, как я могу сгенерировать 2-й массив из параметра запроса?

1 Ответ

4 голосов
/ 13 мая 2019

может ли кто-нибудь подсказать, как я могу сгенерировать 2-й массив из параметра запроса ...

На самом деле это довольно просто.Вам нужен только String.indexOf (String, int) !

Другими словами: вы можете использовать этот метод для определения:

  • , где у вас есть AND /ИЛИ подстроки в вашей строке параметров
  • , и вы можете сделать это , начиная с индекса

Значение: сначала вы можете сделать indexOf("AND") и indexOf("OR") дляопределите ключевое слово first .Это дает индекс я.Теперь вы используете вышеупомянутый метод, который использует индекс для поиска по right этого первого ключевого слова.

Другими словами: это «только» требует от вас небольшой цикличности и поиска в строке параметров.

Но, как уже упоминалось в моих комментариях: я думаю, вы упускаете из виду реальную сложность вашей идеи.Вы в основном определяете семантическую для содержимого строки.И вы вводите операторов .Если вы действительно серьезно относитесь к этому, то вам придется рассмотреть порядок старшинства для ваших изобретателей.Если эта вещь становится «общедоступной» и имеет более чем нескольких пользователей, это только вопрос времени, когда кто-то появится и захочет, чтобы И предшествовал ИЛИ.И какой-то способ иметь «скобки» для включения группировки терминов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...