如何从更大的字符串java中提取特定的子字符串

时间:2012-12-18 21:55:24

标签: java regex substring

我有以下字符串:

String n = "(.........)(......)(.......)(......) etc"

我想编写一个方法,将List<String>填充n的每个子字符串,该字符串位于()之间。提前谢谢!

4 个答案:

答案 0 :(得分:2)

我对String方法不太熟悉,所以我确信有一种方法可以在不必自己编写代码的情况下完成,只需使用一些花哨的方法,但是你可以去了:

经过测试,100%完美无缺:)

String string = "(stack)(over)(flow)";
ArrayList<String> subStrings = new ArrayList<String>();
for(int c = 0; c < string.length(); c++) {
    if(string.charAt(c) == '(') {
        c++;
        String newString = "";
        for(;c < string.length() && string.charAt(c) != ')'; c++) {
            newString += string.charAt(c);
        }
        subStrings.add(newString);
    }
}

答案 1 :(得分:1)

如果(...)对没有嵌套,则可以在Java中使用正则表达式。看一下java.util.regex.Pattern类。

答案 2 :(得分:1)

我制作了这个正则表达式版本,但它有点冗长。我相信它可以改进。 (注意:“n”是你的输入字符串)

    Pattern p = Pattern.compile("\\((.*?)\\)");
    Matcher matcher = p.matcher(n);
    List<String> list = new ArrayList<String>();
    while (matcher.find())
    {
        list.add(matcher.group(1));  // 1 == stuff between the ()'s
    }

答案 3 :(得分:0)

这应该有效:

    String in = "(bla)(die)(foo)";
    in = in .substring(1,in.length()-1);
    String[] out = in .split(Pattern.quote(")("));