0

我从服务器收到如下响应,

<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中的服务器获取部分响应?

我实际上需要计算我们可以在我的应用程序中看到上述信息的次数。

我尝试研究并浏览了一些链接,

从字符串中删除所有出现的 \

如何在android中将字符`\n`替换为新行

如何在 Android 中剥离或转义 html 标签

然而,这些都不能真正帮助我实现我想要的。

请问,有人可以帮忙吗?

4

1 回答 1

2

您可以使用以下方法从 a 中获取最后一位数字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

编辑,多个号码:

这是我为你写的一小段丑陋的代码。这会从 a 获取所有数字String并删除第一个数字。(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
于 2017-10-26T08:41:02.667 回答