Клип все данные, кроме определенных данных из ответа сервера для использования в приложении

Я получаю ответ от сервера, как показано ниже,

<p style="font-family:Arial, Helvetica, sans-serif; font-size:18px;"> <strong>XXX Pvt Ltd. has been used 3 times.The contact information for XXX can only be viewed -4 more times on App until it expires. Please urgently verify the information.</strong></p>

Здесь мне нужно целочисленное значение -4, если оно отрицательное, или 4, если оно положительное. Если он отрицательный, я бы хотел получить его с отрицательным знаком.

Есть ли способ обрезать все текстовые значения и просто получить часть ответа от сервера в Android?

Мне действительно нужно количество раз, когда мы можем увидеть информацию выше в моем приложении.

Я попытался исследовать и прошел через некоторые ссылки, как,

Удалить все вхождения \ из строки

Как заменить символ `\n` в качестве новой строки в Android

Как убрать или убрать HTML-теги в Android

Однако ничто из этого не могло помочь мне в достижении того, чего я хочу.

Пожалуйста, кто-нибудь может помочь?

1 ответ

Решение

Вы можете получить последнюю цифру из String используя это:

String s = "";
String str = "<p style=\\\"font-family:Arial, Helvetica, sans-serif; font-size:18px;\\\"> <strong> This is the information you need 5 times you can see.</strong></p>";
Pattern p = Pattern.compile("(\\d+)(?!.*\\d)");
Matcher m = p.matcher(str);
if (m.find()) {
    s = m.group();
}
int number = Integer.parseInt(s);

number это номер из вашей строки HTML.

Смотрите: https://regex101.com/r/jAFJiL/1

Изменить несколько номеров:

Вот небольшой уродливый кусок кода, который я написал для вас. Это получает все числа от String и удаляет первый. (The 18px из вашего ввода):

String str = "<p style=\"font-family:Arial, Helvetica, sans-serif; font-size:18px;\"> <strong>XXX Pvt Ltd. has been used 3 times.The contact information for XXX can only be viewed 4 more times on App until it expires. Please urgently verify the information.</strong></p>";
boolean previousWasDigit = false;

ArrayList<Integer> numbers = new ArrayList<>();
String number = "";
for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i);
    if (Character.isDigit(c)) {
        if (previousWasDigit) {
            number += c;
        } else {
            number = Character.toString(c);
        }
        previousWasDigit = true;
    } else {
       if (previousWasDigit) {
           numbers.add(Integer.parseInt(number));
       }
       previousWasDigit = false;
    }
}
numbers.remove(0); // we remove the first digit (18) here
// numbers contains the digits of your string
Другие вопросы по тегам