我有如下字符串中的网址
http://www.example.com/abc?page=6
http://www.example.com/abc?page=66
http://www.example.com/abc?page=666
我想只提取页码,即只在“=”之后使用java中的字符串函数提取字符,但不知道如何做到这一点。请帮忙
谢谢
当情况像在给定字符后得到任何东西一样简单时,您实际上并不需要正则表达式。
例子
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
.
您可以使用String.substring method
String result = input.substring(input.indexOf("=")+1);
附加信息
public String substring(int beginIndex)
返回一个新字符串,它是该字符串的子字符串。子字符串以指定索引处的字符开始并延伸到该字符串的末尾。
可用于提取 URL(不仅是“页面”)内任何给定参数的整数值的解决方案是:
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");
}
如果您的网址格式是固定的
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