2014-07-09 142 views
2

我正在使用grails應用程序。我需要從字符串中只提取部分url到.com(或gov,edu,mil,org,net等)。從字符串中獲取網址groovy

例如:

輸入: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。請幫忙。謝謝。

編輯:我向所有downvoters道歉,我沒有包括我試過的東西。這是我的嘗試:

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

但我得到了以下錯誤:MissingPropertyException occurred when processing request: [POST] /mypackage/resource/crawl

+2

你試過['java.net.URI'](http://stackoverflow.com/questions/9607903/get-domain -name從 - 定的URL)? – Will

+1

我不知道爲什麼這個問題上的反對票正在積累。該問題描述了@ayushi顯然不知道如何解決的具體問題。解決方案很簡單,但不一定很明顯,所以這似乎是一個合理的問題。反對票的動機是什麼? –

+1

@JeffScottBrown再次,我想這是這種情況:*每當你遇到一個極度sl,,**無花大價的帖子**,或者一個明顯而且可能危險不正確的答案時,使用你的低估。*摘自[摘錄](http://stackoverflow.com/help/privileges/vote-down)。 – dmahapatro

回答

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

非常感謝傑夫。我從來沒有使用正則表達式。這真的有幫助。 –

+1

對不起,你的問題被拒絕了。引用的原因「這個問題沒有顯示任何研究工作;它不清楚或沒有用」,似乎並不適用於此。這個問題很清楚,很有用,我不認爲這個問題表明你一定沒有做任何研究或者付出任何努力。太令人沮喪了。讓我瘋狂的是,人們想爲這種情況做這種事情。祝你好運! –

+0

我做了研究,但沒有付出努力,因爲我需要緊急修復,因爲發佈截止日期。感謝您的幫助。 :) –

0

我在代碼中發現了錯誤。我輸錯getProtocol作爲getprocolocol,它一次又一次地迴避我的觀察。它應該是:

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

謝謝大家的幫助。

0

您可以嘗試

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

這應該解決您的問題