Парсинг данных с REST URL - PullRequest
0 голосов
/ 25 мая 2018

У меня есть URL-адрес, который выглядит следующим образом: https://test.sample.com/product/<product_Id>/subproduct/<sub_product_id>

Я пытаюсь получить <product_id> и <sub_product_id> из этого как можно более чистым способом.

То, что я пытался сделать, это разделить строку, пройти по каждому элементу и получить элементы после «product» и «subproduct».

Это единственный способ сделать это?Или, вернее, самый лучший способ?

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Вы можете использовать класс Uri в android.net.Uri

  Uri uri = Uri.parse("https://test.sample.com/product/4/subproduct/8");
    List list =  uri.getPathSegments();
    Log.d("productid",list.get(1).toString());
    Log.d("subproductid",list.get(3).toString());
0 голосов
/ 25 мая 2018

Это работает, если вы знаете, что URL всегда будет форматироваться одинаково.String url = "https://test.sample.com/product/asdf/subproduct/qwerty"; String [] urlArray = url.split (" / "); // здесь может быть проверка, если массив не менее 7 или любой другой длины, которую вам требуется. String product = urlArray [4]; String subproduct = urlArray [6];

0 голосов
/ 25 мая 2018

Разделение строки URL является одним из вариантов, но мы можем попробовать использовать String#replaceAll для подхода на основе одного лайнера на основе регулярных выражений:

String url = "https://test.sample.com/product/<product_Id>/subproduct/<sub_product_id>";
System.out.println(url.replaceAll(".*/product/(.*?)/.*$", "$1"));
System.out.println(url.replaceAll(".*/subproduct/(.*?)$", "$1"));

<product_Id>
<sub_product_id>

Демонстрация

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