我有以下字符串:
String n = "(.........)(......)(.......)(......) etc"
我想编写一个方法,将List<String>
填充n
的每个子字符串,该字符串位于(
和)
之间。提前谢谢!
答案 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(")("));