在Java中使用Split并对结果进行子串

Using Split in Java and substring the result

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
string split in java

我有这个Key - Value,我想把它们分开,得到如下的回报:

1
2
String a ="Key"
String b ="Value"

那么最简单的方法是什么呢?


1
2
3
4
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
2
3
String[] parts = str.split("\\s*-\\s*");
String a = parts[0];
String b = parts[1];


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

split()indexOf()计算量大一点,但是如果你不需要每秒分裂数十亿次,你就不在乎了。


我喜欢在下面的雅加达公共语言库中使用stringutils.substringbefore和stringutils.substringafter。


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

作为一个较长的选择:

1
2
3
4
5
6
7
    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);
    }


类似的东西

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