我想输入这样的字符串:
[4, 5, 6] + [1, 2, 3]
[1, 1, 12] - [22, 12, 0]
...
如何将每个括号[]中的所有整数放入集合中。 例如:结果将是两组
[4, 5, 6] and [1, 2, 3]
[1, 1, 12] and [22, 12, 0]
答案 0 :(得分:0)
您可以使用regexp表达式从输入字符串中提取[]
标记(您可以使用regexplanet来测试/验证正则表达式))。然后,您可以使用字符串标记生成器来创建检索到的标记集。所以该计划将在以下方面展望:
// Set containing subsets which contain integer values between []
Set<Set> sets = new HashSet();
String in = "[4, 5, 6] + [1, 2, 3] [1, 1, 12] - [22, 12, 0]";
// Get all tokens between []
Matcher matcher = Pattern.compile(...).matcher(in);
while ( matcher.find() ) {
Set<int> subSet = new HashSet();
sets.add(subSet);
// Get integer values between []
String values = matcher.group();
// Add all integers to subset
StringTokenizer st = new StringTokenizer(values, ",");
while(st.hasMoreTokens()) {
subset.add(st.nextToken());
}
}
注意:我还没有对上面的代码进行测试或编译,因此它可能有问题,并且可能有更好的方法来实现它!
答案 1 :(得分:0)
我不确定它是否回答了你的问题,你可能会尝试这样做:
String input = "[4, 5, 6] + [1, 2, 3]" ;
Pattern p = Pattern.compile("\\[(.*?)\\]");
Matcher m = p.matcher(input);
while (m.find()){
Set<Integer> S = new TreeSet<>();
String g = m.group(1);
Stream.of(g.split(",")).forEach(i -> S.add(Integer.parseInt(i.trim())));
System.out.println(S);
}
希望它有所帮助。