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

时间:2011-09-26 13:46:39

标签: java substring split

  

可能重复:
  string split in java

我有这个Key - Value,我想将它们彼此分开并得到如下所示的回复:

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

最简单的方法是什么?

7 个答案:

答案 0 :(得分:9)

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 :(得分:5)

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

答案 2 :(得分:3)

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

split()indexOf()计算密集程度更高,但如果你不需要每秒分割数十亿次,你就不在乎了。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

我喜欢使用下面的Jakarta Commons Lang库中的StringUtils.substringBeforeStringUtils.substringAfter

答案 5 :(得分:1)

类似

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

答案 6 :(得分: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);
    }