2014-07-20 52 views
1

我有一個字符串,看起來是這樣的:Java:使用第一次出現的分離器從一個字符串中提取兩個字符串?

String a = "URL:www.blahblah.com:/username" 

我希望能夠的:第一次出現後的:第一次出現,然後之前提取字符串的第一部分中的字符串的其餘部分

所以我最終會:

String one = "URL" 
String two = "www.blahblah.com:/username" 

感謝

+1

你有什麼問題嗎? – Braj

+0

我不想讓你爲我寫一堂課。 我有一個字符串,我希望能夠在第一次出現的「符號」在我的例子中分成兩部分:' –

+0

回答下面... – 1baga

回答

3

你有幾個選擇。你可以使用String#split(String, int)有限制,

String a = "URL:www.blahblah.com:/username"; 
String [] res = a.split(":", 2); 
System.out.println(Arrays.toString(res)); 

或者你可以使用indexOf(int),然後使用substring與相對指標,

int pos = a.indexOf(":"); 
String b = a.substring(0, pos); 
String c = a.substring(pos+1); 
System.out.printf("part 1 = %s, part 2 = %s%n", b, c); 

這裏我得到(分別)

[URL, www.blahblah.com:/username] 
part 1 = URL, part 2 = www.blahblah.com:/username 
+0

我會說你提供的第一個選項是一個整潔的整理。 像你提供的第二種選擇那樣做有什麼好處嗎? 謝謝 –

+0

@莫。不要擔心這樣的微觀優化。選擇一個你喜歡的。 –

+1

最後一個問題。 爲什麼在「:」之前有兩個反斜槓?它確保它被用作實際字符串而不是正則表達式保留符號後的值? –

2

試試這個:

String a = "URL:www.blahblah.com:/username"; 
int index = a.indexOf(":"); 
String before = a.substring(0,index); 
String after = a.substring(index+1); 

如果使用split,第二個冒號問題,你將結束3串,即 「URL」,「www.blahblah .com「和」/ username「,這不是你想要的,據我所知。但是,請注意該重載方法split(String, int)會幫助你控制的應用分流模式的次數,所以你仍然可以做到這一點使用split像這樣:

a.split(":",2);  

Demo

1

有是名爲「split」的String類中的方法。
爲了您上面的字符串一個你可以使用:

a.split(':', 2); 

它返回的字符串數組。 這裏第一個參數是reg-ex,第二個參數是你想要的字符串數量。

1
String one = a.substring(0, a.indexOf(":")); 
String two = a.substring(a.indexOf(":") + 1, a.length()); 
相關問題