Java:在特定字符后提取字符
我有如下字符串中的URLJava:在特定字符后提取字符,java,string,Java,String,我有如下字符串中的URL http://www.example.com/abc?page=6 http://www.example.com/abc?page=66 http://www.example.com/abc?page=666 我只想使用java中的字符串函数提取页码,即仅提取=之后的字符,但不知道如何执行此操作。请帮忙 谢谢如果情况非常简单,只需要在给定字符后获取任何内容,那么您就不需要正则表达式了 范例 输出 注 如果字符串不包含=字符,则结果将是整个字符串 这是因为方法lastI
http://www.example.com/abc?page=6
http://www.example.com/abc?page=66
http://www.example.com/abc?page=666
我只想使用java中的字符串函数提取页码,即仅提取=之后的字符,但不知道如何执行此操作。请帮忙
谢谢如果情况非常简单,只需要在给定字符后获取任何内容,那么您就不需要正则表达式了 范例 输出 注 如果字符串不包含=字符,则结果将是整个字符串 这是因为方法lastIndexOf将返回-1,在示例中与+1相加,因此返回0
简而言之,它将返回整个字符串的一个子字符串,从0开始,扩展到原始字符串的整个长度。当大小写非常简单,只需在给定字符后获取任何内容时,就不需要正则表达式 范例 输出 注 如果字符串不包含=字符,则结果将是整个字符串 这是因为方法lastIndexOf将返回-1,在示例中与+1相加,因此返回0 简而言之,它将返回整个字符串的一个子字符串,从0开始,延伸到原始字符串的整个长度。您可以使用string.substring方法 附加信息 根据java文档 返回作为此字符串的子字符串的新字符串。子串 从指定索引处的字符开始,并扩展到 这个字符串的结尾 可以使用String.substring方法 附加信息 根据java文档 返回作为此字符串的子字符串的新字符串。子串 从指定索引处的字符开始,并扩展到 这个字符串的结尾
如果URL的格式是固定的
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
如果URL的格式是固定的
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
可用于提取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=If,则抛出异常,因为返回零是错误的,因为零可以是有效的页码
您可以这样使用它:
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");
}
可用于提取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=If,则抛出异常,因为返回零是错误的,因为零可以是有效的页码
您可以这样使用它:
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");
}
正则表达式是解决这类问题的好方法。花点时间学习它们是非常值得的,因为您可以在各种编程语言中应用它们。这可能有点草率,不太使用正则表达式,但如果有多个参数,这将是一个很好的匹配组。[a-zA-Z]+=[0-9]+@Legend也许他只想要数字,那么[0-9]+就合适了。我想我只是有一个不同的思考过程。我提供的答案适用于将数据输入地图。正则表达式是解决此类问题的好方法。花点时间学习它们是非常值得的,因为您可以在各种编程语言中应用它们。这可能有点草率,不太使用正则表达式,但如果有多个参数,这将是一个很好的匹配组。[a-zA-Z]+=[0-9]+@Legend也许他只想要数字,那么[0-9]+就合适了。我想我只是有一个不同的思考过程。我提供的答案适合将数据输入地图。效果非常好。感谢you@LalithMohan不客气。详细信息:如果字符串不包含=字符,则结果将是整个字符串。这是因为方法lastIndexOf将返回-1,它与+1相加,因此为0。简而言之,它将返回整个字符串的子字符串,从0开始,扩展到原始字符串的整个长度。我会记住这一点。谢天谢地。感谢you@LalithMohan不客气。详细信息:如果字符串不包含=字符,则结果将是整个字符串。这是因为方法lastIndexOf将返回-1,它与+1相加,因此为0。简而言之,它将返回整个字符串的子字符串,从0开始,扩展到原始字符串的整个长度。我会记住这一点。谢谢