从一个字符串中获取URL(使用Groovy)

3
我正在处理一个Grails应用程序。 我需要从字符串中提取仅包含.com(或.gov,.edu,.mil,.org,.net等)的URL部分。
例如:
输入: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错误:[POST] /mypackage/resource/crawl


2
你尝试过使用 java.net.URI 吗? - Will
1
我不确定为什么这个问题会被投下负票。这个问题描述了一个特定的问题,@ayushi显然不知道如何解决。虽然解决方案很简单,但并不一定显而易见,所以这似乎是一个合理的问题。那么,对于这个问题投下负票的动机是什么呢? - Jeff Scott Brown
1
@JeffScottBrown,我想这种情况是适用的:每当你遇到一个极其草率、没有付出努力的帖子或者明显且可能危险的错误答案时,请使用你的负投票。该内容摘自节选 - dmahapatro
1
个人认为在这种情况下,负评是没有根据的。我认为这个问题非常合理。 - Jeff Scott Brown
3个回答

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/'

非常感谢Jeff。我从未使用过正则表达式。这真的很有帮助。 - clever_bassi
1
很抱歉您的问题被投下了负票。所列出的原因“这个问题没有展示任何研究努力;它不清楚或者没有用处”似乎并不适用于这里。这个问题是明确的、有用的,我认为这个问题并不表明您没有做过任何研究或付出任何努力。SO真是令人沮丧。对于像这样的情况,让人发疯的是有些人想要这样做。祝好运! - Jeff Scott Brown
我进行了研究,但由于发布期限的紧迫性,我没有投入足够的精力。感谢您的帮助。 :) - clever_bassi

0

你可以尝试

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

这应该可以解决你的问题


0
我也发现了代码中的错误。我把 getProtocol 打成了 getprotocol,一遍又一遍地忽略了它,实在是不应该。正确的应该是:
URL url = new URL(website);
String webUrl = url.getProtocol()+"://"+url.getAuthority()

感谢大家的帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接