我有以下字符串:
String n = "(.........)(......)(.......)(......) etc"
我想写一个方法来填充 a之间List<String>
的每个子字符串和。先感谢您!n
(
)
它可以在一行中完成:
String[] parts = input.replaceAll("(^.*\\()|(\\).*$)", "").split("\\)\\(");
调用replaceAll()
剥离租赁和尾随括号(加上第一个/最后一个括号之前/之后的任何其他垃圾字符),然后你就split()
在括号对上。
我对 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);
}
}
我制作了这个正则表达式版本,但有点冗长。我确信它可以改进。(注意:“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
}
如果 (...) 对没有嵌套,您可以在 Java 中使用正则表达式。看看 java.util.regex.Pattern 类。
这应该有效:
String in = "(bla)(die)(foo)";
in = in .substring(1,in.length()-1);
String[] out = in .split(Pattern.quote(")("));