从Java中的URL删除端口号

问题描述

我想用Java编写一个函数,如果它是认端口,它将删除该端口。

所以如果给

String url80 = "http://www.somewhere.com:80/someplace";

它将返回

String urlNo80 = "http://www.somewhere.com/someplace";

如果有

String url443 = "https://www.somewhere.com:443/someplace";

它将返回

String urlNo443 = "https://www.somewhere.com/someplace";

有没有比这更好的方法

public String removePortIfDefault(String inUrl) {
    String returnUrl = inUrl;
    if (inUrl.contains("http://") && inUrl.contains(":80")) {
        returnUrl = inUrl.replaceAll(":80","");
    }
    if (inUrl.contains("https://") && inUrl.contains(":443")) {
        returnUrl = inUrl.replaceAll(":443","");
    }
    return returnUrl;
}

谢谢!

解决方法

您可以使用带有正则表达式的replaceFirst(或replaceAll)

String urlNo80 = url80.replaceFirst(":\\d+","");
,

不要使用字符串操作来处理URL。 Java为此提供了类。

['apple','pear']
" 2"
String url80 = "http://www.somewhere.com:80/someplace";