Java-将包含整数的输入字符串转换为整数集

Java-将包含整数的输入字符串转换为整数集,java,Java,我想输入如下字符串: [4,5,6]+[1,2,3] [1,1,12]-[22,12,0] 如何将每个括号[]中的所有整数放入一个集合中。 例:结果将是两组 [4,5,6]和[1,2,3] [1,1,12]和[22,12,0]您可以使用一个regexp表达式从输入字符串中提取[]标记(您可以用来测试/验证regexp))。然后,您可以使用字符串标记器创建检索到的标记集。因此,该计划将从高层次上看,如下所示: // Set containing subsets which contain int

我想输入如下字符串:
[4,5,6]+[1,2,3]

[1,1,12]-[22,12,0]

如何将每个括号[]中的所有整数放入一个集合中。 例:结果将是两组

[4,5,6]和[1,2,3]


[1,1,12]和[22,12,0]

您可以使用一个regexp表达式从输入字符串中提取
[]
标记(您可以用来测试/验证regexp))。然后,您可以使用字符串标记器创建检索到的标记集。因此,该计划将从高层次上看,如下所示:

// 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());
    }
}
//包含介于[]之间的整数值的子集的集合
Set Set=新的HashSet();
字符串in=“[4,5,6]+[1,2,3][1,1,12]-[22,12,0]”;
//获取[]之间的所有令牌
Matcher Matcher=Pattern.compile(…).Matcher(in);
while(matcher.find()){
Set subSet=新的HashSet();
集合。添加(子集);
//获取介于[]之间的整数值
字符串值=matcher.group();
//将所有整数添加到子集
StringTokenizer st=新的StringTokenizer(值,“,”);
而(st.hasMoreTokens()){
添加(st.nextToken());
}
}

注意:我没有测试也没有编译上面的代码,所以它可能有错误,而且可能有更好的方法

我不确定它是否回答了您的问题,您可能正在尝试这样做:

    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);
    }
String input=“[4,5,6]+[1,2,3]”;
Pattern p=Pattern.compile(“\\[(.*?\\\]”);
匹配器m=p.Matcher(输入);
while(m.find()){
Set S=新树集();
字符串g=m组(1);
forEach(i->S.add(Integer.parseInt(i.trim()));
系统输出打印项次;
}

希望能有所帮助。

到目前为止您做了什么?我已经尝试将其转换为字符数组。但问题是它只能将数字从0转换为9。对于所有超过2位(>10)的数字,它不起作用。请更具体、更清楚。
输入字符串:[11、23、1、4]+[2、3、6、1]结果:[1、2、3、4]和[1、2、3、6]
根据我的目的,结果必须是[11、23、1、4],而不是[1、2、3、4]