2015-09-11 190 views
0

我有一串網址,例如"domain.com/url1, domain.com/url2 etc"。有時它們是逗號,製表符或管道分隔符。我想要做的就是將它們分成一個字符串數組,並自動處理任何潛在的用例。有人知道處理這個問題的好方法嗎?從分隔字符串創建字符串數組。

我從這樣的事情開始,但它不能正常工作,也不處理所有用例。

Collection<String> newUrls = Arrays.asList(photoHolder.getPhotoURLs().replaceAll("\\|", ",").replaceAll("\\s+", "").split(",")); 
+0

你的分隔符有什麼共同點?它們最後都包含空格嗎? –

+0

在csv文件中有一個照片字段,每個csv文件可能取決於生產它的公司。他們發給我一張照片網址列表,我只需要能夠處理所有用例。有時候有空間,有時候沒有空間。 –

回答

3

我相信這應該是可能僅使用split方法,並提供一個正則表達式,將匹配任何你的分隔符。

Collection<String> newUrls = Arrays.asList(photoHolder.getPhotoURLs().split("\\t|\\||,")); 
+0

這會刪除任何潛在的空白嗎? –

+0

@CodeJunkie不,它不會。爲此,您需要在每個字符串實例上調用'String#trim()'。或者你可以想出一個更復雜的REGEX來匹配空格,並將其視爲分隔符的一部分。 –

+0

你覺得這可能是最好的解決方案嗎? photoHolder.getPhotoURLs()。replaceAll(「\\ s +」,「」).split(「\\ t | \\ ||,」) –

0

你可能會使用一些「聰明」正則表達式是獨立的分隔符,但使用的域名(.COM,.co.uk,IP地址...)的網址分開。

0

我想你已經做了一些拆分方法來覆蓋所有場景,並最終將它們放在一個列表中。另一個關於潛在用例的案例使用了try catch,並且在catch處理異常,因爲我們無法處理所有場景。想想這會有所幫助。

Uri uri = Uri.parse("domain.com/url1/what ever_the_url"); 
String protocol = uri.getScheme(); 
String server = uri.getAuthority(); 
String path = uri.getPath(); 
Set<String> args = uri.getQueryParameterNames(); 
String limit = uri.getQueryParameter("limit"); 

試試這個吧。