剪切一个字符串 (java)

Nit*_*euq 1 java string ftp split

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

换句话说,我想要:

String ftp = "ftp.domain.com"

String user = "user"

String password = "password"

String port = "21"
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但有点脏,对吧?

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];
Run Code Online (Sandbox Code Playgroud)

你有其他解决方案吗?

谢谢 :)

Max*_*ola 6

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

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];
Run Code Online (Sandbox Code Playgroud)

使用 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();
Run Code Online (Sandbox Code Playgroud)