剪切字符串 (java)

Cut a String (java)

我想剪切我的字符串 "ftp://user:password@ftp.domain.com:21" 以将每篇文章都放在一个字符串中

换句话说,我想要:

String ftp = "ftp.domain.com"

String user = "user"

String password = "password"

String port = "21"

这段代码可以工作,但有点脏,对吧?

String fullFtpAdress = "ftp://user:password@ftp.domain.com:21";
fullFtpAdress = fullFtpAdress.substring(6);
String[] parts1 = fullFtpAdress.split(":",2);
String user = parts1[0];
String[] parts2 = parts1[1].split("@");
String password = parts2[0];
String[] parts3 = parts2[1].split(":");
String ftp = parts3[0];
String port = parts3[1];

你有其他解决办法吗?

谢谢:)

可能不是最干净的方法,但这只是一个拆分。

String fullFtpAddress = "ftp://user:password@ftp.domain.com:21";
String[] parts = fullFtpAddress.split("[:,@,/]");
String domain = parts[5];
String user = parts[3];
String password = parts[4];
String port = parts[6];

使用 URI:

URI uri = URI.create(fullFtpAddress);
String domain = uri.getHost();
String userInfo = uri.getUserInfo();
String user = userInfo != null ? userInfo.split(":")[0] : null;    
String password = userInfo != null ? userInfo.split(":")[1]: null;
int port = uri.getPort();

使用URL个字段:

URL url = new URL("ftp://user:password@ftp.domain.com:21");
String userInfo = url.getUserInfo();
String protocol = url.getProtocol();
String host = url.getHost();
int port = url.getPort();
...