获取字符串中的特定数字

时间:2012-08-20 14:05:48

标签: java parsing

我正在尝试解析文本并从以下文本中获取值:

Page 1 of 6

我正在考虑使用java提取结束号。 所以我在这种情况下应该是6。

我可以使用任何java字符串函数吗? (或)任何其他方式?

5 个答案:

答案 0 :(得分:15)

您可以使用正则表达式(比使用String.split更安全):

public static void main(String[] args) {

    String text = "Page 1 of 6";

    Matcher m = Pattern.compile("Page (\\d+) of (\\d+)").matcher(text);

    if (m.matches()) {
        int page  = Integer.parseInt(m.group(1));
        int pages = Integer.parseInt(m.group(2));

        System.out.printf("parsed page = %d and pages = %d.", page, pages);
    }
}

输出:

parsed page = 1 and pages = 6.

答案 1 :(得分:8)

这样的事情:

String s = "Page 1 of 6";
String[] values = s.split(" ");
System.out.println(Integer.parseInt(values[values.length - 1]));

答案 2 :(得分:2)

我认为这是基本的字符串操作。你能做的就是这个..

    String pageNumberString = "Page 1 of 6"; 
    int ofIndex = pageNumberString.indexOf("of"); 
    int pageNumber = Integer.parseInt(pageNumberString.substring(ofIndex + 2));

我认为这应该有效。

答案 3 :(得分:2)

Pattern p = Pattern.compile("(\\d+)$");
Matcher m = p.match("Page 1 of 6");
System.out.println(Integer.parseInt(m.group(1)));

答案 4 :(得分:0)

我会使用正则表达式,只要您的数字格式保持相似。

例如,这个匹配任何带有2个数字的字符串(由任何非数字字符分隔),并捕获2个数字。

(\d+)[^\d]+(\d+)

注意:这将匹配一些奇怪的东西,如“Page1of2”。它也不会匹配负数。并不是说您希望获得负面的页码。