从Java中的URL中移除端口号

huangapple go评论98阅读模式
英文:

Remove port number from a url in java

问题

我想在Java中编写一个函数,如果端口是默认端口,则移除该端口。

因此,如果给定:

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

它将返回:

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

如果给定:

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

它将返回:

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

有比以下方式更好的方法吗?

  1. public String removePortIfDefault(String inUrl) {
  2. String returnUrl = inUrl;
  3. if (inUrl.contains("http://") && inUrl.contains(":80")) {
  4. returnUrl = inUrl.replaceAll(":80", "");
  5. }
  6. if (inUrl.contains("https://") && inUrl.contains(":443")) {
  7. returnUrl = inUrl.replaceAll(":443", "");
  8. }
  9. return returnUrl;
  10. }
英文:

I want to write a function in java which removes the port if it is the default port.

So if given

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

it will return

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

And if given

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

It will return

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

Is there a better way to do it than

  1. public String removePortIfDefault(String inUrl) {
  2. String returnUrl = inUrl;
  3. if (inUrl.contains("http://") && inUrl.contains(":80")) {
  4. returnUrl = inUrl.replaceAll(":80", "");
  5. }
  6. if (inUrl.contains("https://") && inUrl.contains(":443")) {
  7. returnUrl = inUrl.replaceAll(":443", "");
  8. }
  9. return returnUrl;
  10. }

答案1

得分: 4

你可以使用replaceFirst(或replaceAll)与正则表达式:

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

You can use replaceFirst (or replaceAll) with a regular expression

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

答案2

得分: 4

不要使用字符串操作处理URL。Java中有相应的类可供使用。

  1. String url80 = "http://www.somewhere.com:80/someplace";
  1. // 使用 java.net.URI
  2. URI uri = URI.create(url80);
  3. uri = new URI(uri.getScheme(), uri.getHost(), uri.getPath(), uri.getFragment());
  4. String urlNo80 = uri.toString(); // http://www.somewhere.com/someplace
  1. // 使用 java.net.URL
  2. URL url = new URL(url80);
  3. url = new URL(url.getProtocol(), url.getHost(), url.getFile());
  4. String urlNo80 = url.toString(); // http://www.somewhere.com/someplace
英文:

Don't use string manipulation to work with a URL. Java has classes for that.

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

huangapple
  • 本文由 发表于 2020年9月19日 00:13:43
  • 转载请务必保留本文链接:https://go.coder-hub.com/63959296.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定