簡體   English   中英

從java中的url中刪除端口號

[英]Remove port number from a url in java

我想在 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 有這方面的課程。

String url80 = "http://www.somewhere.com:80/someplace";
// Using java.net.URI
URI uri = URI.create(url80);
uri = new URI(uri.getScheme(), uri.getHost(), uri.getPath(), uri.getFragment());
String urlNo80 = uri.toString(); // http://www.somewhere.com/someplace
// Using java.net.URL
URL url = new URL(url80);
url = new URL(url.getProtocol(), url.getHost(), url.getFile());
String urlNo80 = url.toString(); // http://www.somewhere.com/someplace

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM