-2

我有以下字符串:

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

我想写一个方法来填充 a之间List<String>的每个子字符串和。先感谢您!n()

4

5 回答 5

5

它可以在一行中完成:

String[] parts = input.replaceAll("(^.*\\()|(\\).*$)", "").split("\\)\\(");

调用replaceAll()剥离租赁和尾随括号(加上第一个/最后一个括号之前/之后的任何其他垃圾字符),然后你就split()在括号对上。

于 2012-12-18T22:01:15.457 回答
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);
    }
}
于 2012-12-18T22:00:29.697 回答
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
    }
于 2012-12-18T22:20:11.253 回答
1

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

于 2012-12-18T22:01:36.457 回答
0

这应该有效:

    String in = "(bla)(die)(foo)";
    in = in .substring(1,in.length()-1);
    String[] out = in .split(Pattern.quote(")("));
于 2012-12-18T22:04:32.737 回答