我想删除一部分字符串。
例如:
原始字符串:
1 | 2 | 3
[A]B | C | [D]
C[D] | C
我只想要[]
未来结果:
1 2 3 B C
答案 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)
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]