我的网址如下所示
http://www.example.com/abc?page=6
http://www.example.com/abc?page=66
http://www.example.com/abc?page=666
我想在java中仅使用字符串函数提取页码,即只提取“=”之后的字符,但不知道如何执行此操作。请帮忙
谢谢
答案 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");
}