Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在特定字符后提取字符_Java_String - Fatal编程技术网

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

Java:在特定字符后提取字符,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

我有如下字符串中的URL

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开始,扩展到原始字符串的整个长度。我会记住这一点。谢谢