Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
剪切字符串(java)_Java_String_Split_Ftp - Fatal编程技术网

剪切字符串(java)

剪切字符串(java),java,string,split,ftp,Java,String,Split,Ftp,我想剪断我的绳子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:2

我想剪断我的绳子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();

可能不是最干净的方式,但这只是一次分割

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();
使用字段:

使用字段:


好吧,你可以使用正则表达式和捕获组,这可能是可选的,并得到这些。为此,请看一看如何使用模式和匹配器正则表达式本身在我的脑海中可能看起来像这样,因此它可能不理想,并且可能包含错误-它应该让您开始学习:[^:]+://[^:]+:[^@]+:[^:]+:[^/]+-第1组是用户,第2组是密码,第3组是域,第4组是端口。听起来你可能想使用,如果你是刚使用regex的人,你可以尝试使用这个页面。这有助于了解regex的工作原理。你可以使用regex和捕获组,这可能是可选的,并获得这些组。为此,请看一看如何使用模式和匹配器正则表达式本身在我的脑海中可能看起来像这样,因此它可能不理想,并且可能包含错误-它应该让您开始学习:[^:]+://[^:]+:[^@]+:[^:]+:[^/]+-第1组是用户,第2组是密码,第3组是域,第4组是端口。听起来你可能想使用,如果你是刚使用regex的人,你可以尝试使用这个页面。它有助于理解regex是如何工作的。这是域字符串谢谢你,Maxdola,我将使用URI。这似乎是最好的:这是域字符串谢谢你Maxdola,我将使用URI。这似乎是最好的:这只是他要求的一部分。@Maxdola当我输入答案时,前面的答案已经被接受了;提供了一个链接。添加了一些getter,但不是全部处理;userInfo可以为空,并且应该在名称和密码上分开。好的,我知道,userInfo可以为空,但不会为空,因为他提供了包含userInfo的url。@Maxdola是的。字符串user=userInfo==null?null:userInfo.split:[0];-仍然是分裂。这只是他要求的部分内容。@Maxdola当我输入答案时,先前的答案已经被接受;提供了一个链接。添加了一些getter,但不是全部处理;userInfo可以为空,并且应该在名称和密码上分开。好的,我知道,userInfo可以为空,但不会为空,因为他提供了包含userInfo的url。@Maxdola是的。字符串user=userInfo==null?null:userInfo.split:[0];-还是分裂。