【发布时间】:2020-01-09 13:30:15
【问题描述】:
我想剪掉我的字符串"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];
您还有其他解决方案吗?
谢谢你:)
【问题讨论】:
-
好吧,您可以使用正则表达式和捕获组(这可能是可选的)并获得这些。为此,请查看如何使用
Pattern和Matcher。 - 正则表达式本身可能看起来像这样(就在我的脑海中,所以它可能不理想并且可能包含错误 - 它应该让你开始):[^:]+://([^:]+):([^@])+@([^:]+):([^/]+)- 第 1 组是用户,第 2 组是密码,第 3 组是域,第 4 组是端口。 -
听起来你想使用java.net.URI
-
如果您是使用正则表达式的新手,您可以尝试使用此页面regexr.com 它有助于了解正则表达式的工作原理