删除部分字符串并将其放入Array中

时间:2017-03-05 10:47:03

标签: java

我想删除一部分字符串。

例如:

原始字符串:

1     |  2  | 3
[A]B  |  C  | [D]
C[D]  |  C

我只想要[]

中未包含的部分

未来结果:

1 2 3 B C

2 个答案:

答案 0 :(得分:0)

您可以使用java stream,例如:

public static void main(String[] args) {
    String input = "1 | 2 | 3 | [A]B | C | [D] | C[D] | C ";
    String filter = "\\[.*\\]";
    Arrays.stream(input.split("\\|"))
        .map(s -> s.replaceAll(filter, ""))
        .filter(s -> !s.trim().isEmpty())
        .map(s -> s.trim())
        .forEach(System.out::println);
}

上面的方法用'|'拆分字符串,删除[]中包含的子字符串,如果它们不为空则打印剩余的标记。

如果您只想要唯一元素,则可以将.forEach(System.out::println)替换为.collect(Collectors.toSet()),这将返回具有唯一元素的集合。

答案 1 :(得分:0)

使用regular expressions

    String input = "1 | 2 | 3 | [A] | B | C | [D] | C | [D] | C";
    System.out.println("initial input: " + input);
    input = input.replaceAll(" +\\[.*?\\] +\\|?",""); // remove [..] from the string
    System.out.println("filtered: " + input);
    String[] arr = input.split(" \\| "); // split the remaining parts into an array
    System.out.println("arr: " + Arrays.toString(arr));

输出:

initial input: 1 | 2 | 3 | [A] | B | C | [D] | C | [D] | C                                                                                             
filtered: 1 | 2 | 3 | B | C | C | C                                                                                                                    
arr: [1, 2, 3, B, C, C, C]