2011-09-26 55 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); 
    }