假设我保存了http://192.168.0.123:321的网址。我只想提取192.168.0.123.I可以通过使用此方法来完成此操作
url.toString().substring(7,(url.length()-4));
但是如果保存的网址是http://192.168.0.1:12怎么办?如何自动提取IP地址呢?因为我刚使用的方法会显示192.168.0.
而不是
修改 我在Android Studio上使用Java
编辑2 我用了
str = url.toString();
ip = str.substring(str.indexOf('/')+1, str.lastIndexOf(':');
因为第二个让我崩溃,我找不到解决方法
答案 0 :(得分:2)
修改! :强> 对于Android(Java),请使用以下代码:
(new URL(urlToParse)).getHost();
或者如果您已经有一个URL对象,只有getHost()
方法(对于主机名)
getAuthority()
- (对于主机名:端口)
其他部分请咨询https://docs.oracle.com/javase/tutorial/networking/urls/urlInfo.html
您使用的是哪种语言?
如果使用您选择的语言,可以使用String.split(':')或String.lastIndexOf(':')(和indexof'/')?
你也可以使用regex
- 正则表达式,但这对于这么简单的任务来说可能是一种过度杀伤力。但它肯定更准确/更正确。
此外,还有许多语言为您提取URL解析,以提取主机名/ IP地址。
天真的方法:
str = url.toString();
ip = str.substring(str.indexOf('/')+1, str.lastIndexOf(':');
不太天真的方法:
str = url.toString();
ip = str.split('/')[2].split(':')[0];
正则表达式(仅适用于基于IP地址的网址):
/$https?:\/\/([0-9\.]*?)(:[0-9]*?)?/
答案 1 :(得分:-1)
String s = "http://192.168.0.123:321";
s = s.substring(s.indexOf("://"), s.indexOf(":"));
Output: 192.168.0.123