从字符串groovy获取网址

时间:2014-07-09 18:38:59

标签: regex parsing url groovy extract

我正在使用grails应用。我需要从字符串中仅提取部分网址到.com(或gov,edu,mil,org,net等)。

例如:

输入:https://stackoverflow.com/questions?=34354#es4输出:https://stackoverflow.com/

输入:https://code.google.com/p/crawler4j/issues/detail?id=174输出:https://code.google.com/

任何人都可以建议如何做到这一点?此外,如果可以,我需要在结果字符串中将https更改为http。请帮忙。谢谢。

编辑:我向所有沮丧的人道歉,我没有把我尝试过的东西包括在内。这就是我的尝试:

URL url = new URL(website);
String webUrl = url.getprotocol()+"://"+url.getAuthority()

但我收到以下错误:MissingPropertyException occurred when processing request: [POST] /mypackage/resource/crawl

3 个答案:

答案 0 :(得分:3)

这样的事情满足了给出的两个例子:

def url = new URL('http://stackoverflow.com/questions?=34354#es4')
def result = 'http://' + url.host +'/'
assert result == 'http://stackoverflow.com/'

def url2 = new URL('https://code.google.com/p/crawler4j/issues/detail?id=174')
def result2 = 'http://' + url2.host +'/'
assert result2 == 'http://code.google.com/'

编辑:

当然,您可以使用以下内容缩写连接:

def url = new URL('http://stackoverflow.com/questions?=34354#es4')
def result = "http://${url.host}/"
assert result == 'http://stackoverflow.com/'

def url2 = new URL('https://code.google.com/p/crawler4j/issues/detail?id=174')
def result2 = "http://${url2.host}/"
assert result2 == 'http://code.google.com/'

答案 1 :(得分:0)

我在代码中也发现了错误。我把getProtocol错误输入为getprotocol,它一次又一次地回避了我的观察。应该是:

URL url = new URL(website);
String webUrl = url.getProtocol()+"://"+url.getAuthority()

感谢大家的帮助。

答案 2 :(得分:0)

你可以尝试

​String text = 'http://stackoverflow.com/questions?=34354#es4'
def parts = text.split('.com')
return parts[0] + ".com"

这应该可以解决您的问题