2011-09-26 54 views
3

可能重複:
string split in java在Java中使用斯普利特和串結果

我有這個Key - Value,我想他們彼此分開並獲得返回象下面這樣:

String a = "Key" 
String b = "Value" 

那麼最簡單的方法呢?

+1

你試過了String.split(...)嗎? – Gandalf

+1

我是一名php開發人員,所以它有點不同,但現在我知道我的錯誤,它在分割方法中使用單引號 – Peril

+1

@Salah Yahya:下次嘗試提一下您已經在問題中嘗試過的內容,如此一來對未來的遊客有更多的價值。我甚至鼓勵你重寫這個問題,以表明更多的努力。 –

回答

8
String[] tok = "Key - Value".split(" - ", 2); 
// TODO: check that tok.length==2 (if it isn't, the input string was malformed) 
String a = tok[0]; 
String b = tok[1]; 

" - "是一個正則表達式;如果您需要對構成有效分隔符的內容(例如,使空格可選,或允許多個連續空格)更靈活,可以對其進行調整。

1

String[] parts = "Key - Value".split(" - "); 
String a = parts[0]; 
String b = parts[1]; 
+0

split(「 - 」); ;) 謝謝 – Peril

+0

不客氣:) – MarcoS

4
String[] parts = str.split("\\s*-\\s*"); 
String a = parts[0]; 
String b = parts[1]; 
+1

+1我更喜歡比''更靈活的正則表達式 - 「' – Thomas

3
int idx = str.indexOf(" - "); 
String a = str.substring(0, idx); 
String b = str.substring(idx+3, str.length()); 

split()是多一點比計算密集型indexOf(),但如果你不需要每秒分割數十億次,你不在乎。

1
String s = "Key - Value"; 
String[] arr = s.split("-"); 
String a = arr[0].trim(); 
String b = arr[1].trim(); 
1

作爲一個長一點的選擇:

String text = "Key - Value"; 
    Pattern pairRegex = Pattern.compile("(.*) - (.*)"); 
    Matcher matcher = pairRegex.matcher(text); 
    if (matcher.matches()) { 
     String a = matcher.group(1); 
     String b = matcher.group(2); 
    }