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

时间:2016-04-08 05:06:03

标签: java

我想输入这样的字符串: [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]

2 个答案:

答案 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);
    }

希望它有所帮助。