8

我想提取IP并返回它。就像是

def getIPfromString ( myString ) {

  ..
  return IP 
}

IP = getIPfromString("ftp://192.168.13.108/720_prev")
print " IP Address : " + IP

输出 :

IP Address : 192.168.13.108
4

2 回答 2

5

您可以使用带有一点 Groovy 魔法的 Java 的 URL 类;-)

String getAddressFromString( String url ) {
  url.toURL().host
}

String ip = getAddressFromString( 'ftp://192.168.13.108/720_prev' )

println "IP Address : $ip"

其中(根据要求)输出:

IP Address : 192.168.13.108
于 2012-12-05T11:55:56.230 回答
4

如果 URL 已经有 IP 地址,则转换为 URL 可以提取 IP,但如果在 URL 主机组件中找到域主机名(例如 www.stackoverflow.com),则需要执行解析为地址。这需要在 Java API 中调用InetAddress.getByName() 。

如果 URL 已经有地址,则InetAddress.getByName()将简单地按原样返回地址。此外,如果无法将主机名解析为地址,则需要处理异常。

        String getAddressFromString( String url ) 
         throws MalformedURLException, UnknownHostException
        {
          String host = url.toURL().host
          // this would be equivalent to calling new URL(url).getHost()
          return InetAddress.getByName(host).getHostAddress()
        }

        String ip = getAddressFromString( "http://stackoverflow.com/" )
        println "IP Address : $ip"

输出:

IP Address : 69.59.197.21
于 2012-12-05T14:33:45.923 回答