Java:在特定字符后提取字符

时间:2013-05-24 18:19:06

标签: java string

我的网址如下所示

http://www.example.com/abc?page=6
http://www.example.com/abc?page=66
http://www.example.com/abc?page=666

我想在java中仅使用字符串函数提取页码,即只提取“=”之后的字符,但不知道如何执行此操作。请帮忙

谢谢

4 个答案:

答案 0 :(得分:13)

如果案例就像在给定角色之后得到任何东西一样简单,那么你真的不需要正则表达式。

示例

String test = "http://www.example.com/abc?page=6";
String number = test.substring(test.lastIndexOf("=") + 1);
System.out.println(number);

输出

6

注意

如果您的String不包含=字符,则结果将是整个String

这是因为方法lastIndexOf将返回- 1,在示例中与+1相加,因此返回0

简而言之,它会从String开始返回整个0的子字符串,并延伸到原始String的整个长度。

答案 1 :(得分:3)

您可以使用String.substring method

   String result = input.substring(input.indexOf("=")+1);

其他信息

根据java doc here

public String substring(int beginIndex)
     

返回一个新字符串,该字符串是此字符串的子字符串。子串   从指定索引处的字符开始并扩展到   这个字符串的结尾。

答案 2 :(得分:1)

如果您的网址格式已修复

String url = "http://www.example.com/abc?page=666";
String page = url.substring(url.lastIndexOf('=')+1);
System.out.println(page); // prints 666

如果稍后可能有其他请求参数

String url = "http://www.example.com/book?id=101&page=60&bookmarks=on";
String page = url.split("\\?")[1].replaceAll(".*page=([^&]+).*", "$1");
System.out.println(page); // prints 60

答案 3 :(得分:1)

可用于提取URL(不仅仅是“page”)中任何给定参数的整数值的解决方案是:

public static int extractIntFromURL(String url,String par) throws ParameterNotFoundInURLException{
    int number=0;
    Pattern p = Pattern.compile("[?&]"+par+"=([0-9]+)");
    Matcher m = p.matcher(url);
    m.find();
    try {
        number = Integer.parseInt(m.group(1));
    } catch (java.lang.IllegalStateException e){
        throw new ParameterNotFoundInURLException(url);
    }

    return number;
}

如果URL不包含“page =”,则抛出异常,因为返回零将是错误的,因为零可以是有效的页码。

你可以像这样使用它:

public static void main(String[] args) throws ParameterNotFoundInURLException {
    String url="http://www.example.com/abc?page=66&other=yes&filter=none";
    int pageNum = TheClass.extractIntFromURL(url,"page");
}