gpt4 book ai didi

java - 从字符串中删除列表或数组的元素

转载 作者:行者123 更新时间:2023-12-04 14:35:12 24 4
gpt4 key购买 nike

我有一个列表或一个字符串数组

String [] elements = {"cat", "dog", "fish"};
和一个字符串
String str = "This is a caterpillar and that is a dogger.";
如果字符串中存在任何数组/列表,我想从字符串中删除数组/列表的所有项目。
这样函数应该返回一个字符串
str = "This is a erpillar and that is a ger." (cat and dog removed from the string)
我可以做这样的事情
private String removeElementsFromString (String str, String [] elements) {
if(Arrays.stream(elements).anyMatch(str::contains)){
for(String item : elements){
str = str.replace(item, "");
}
}
return str;
}
但是将 for 循环更改为其他内容的优雅方式是什么。

最佳答案

单线解决方案
以下单行程序完成了这项工作:

str = str.replaceAll(Arrays.stream(elements).map(s -> "(?:" + s + ")").collect(Collectors.joining("|")), "");
演示:
import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
public static void main(String[] args) {
String[] elements = { "cat", "dog", "fish" };
String str = "This is a caterpillar and that is a dogger.";

str = str.replaceAll(Arrays.stream(elements).map(s -> "(?:" + s + ")").collect(Collectors.joining("|")), "");

System.out.println(str);
}
}
输出:
This is a erpillar and that is a ger.
ONLINE DEMO
说明: Arrays.stream(elements).map(s -> "(?:" + s + ")").collect(Collectors.joining("|"))结果进入正则表达式, (?:cat)|(?:dog)|(?:fish)其中 means catdogfish .
下一步是用 "" 替换这个生成的正则表达式.

关于java - 从字符串中删除列表或数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69586817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com