java - 字符串拆分,过滤和加入单行java 8
问题描述
我有字符串,我想用逗号分隔并检查每个字符串中的特定单词,然后修剪然后加入它以创建新字符串
输入:
"UC_Admin, Internal, UC_Reg, US_Admin"
期望的输出:
"UC_Admin,UC_Reg"
我尝试的是:
Arrays.stream("UC_Admin,Internal,UC_Reg,US_Admin".split(","))
.filter(role -> role.contains("UC").join(",");
解决方案
你必须在Collectors.joining(",")
这里使用。另请注意,对于修剪操作,您只能使用map
运算符。
String result = Arrays.stream("UC_Admin,Internal,UC_Reg,US_Admin".split(","))
.filter(role -> role.contains("UC"))
.map(String::trim).collect(Collectors.joining(","));
下面给出了一个更好的方法。对于大型数据集,这应该优于以前的解决方案。但是,我没有进行任何基准测试来证明这一点。
private static final Pattern COMMA = Pattern.compile(",");
String result = COMMA.splitAsStream("UC_Admin,Internal,UC_Reg,US_Admin")
.filter(role -> role.contains("UC"))
.map(String::trim)
.collect(Collectors.joining(","));
推荐阅读
- node.js - express.json() 与 body-parser
- javascript - × TypeError: _questions_json__WEBPACK_IMPORTED_MODULE_1__.map 不是函数(反应)
- excel - 如何基于两个字符串变量运行 if 语句?
- layout - 在 Lisp 的列中打印嵌套列表
- scala - 为什么 Scala 加载命令在 Windows 10 命令提示符下的 REPL 中不起作用?
- c# - 在我的 DbContext 上使用 .Include() 方法时出现网络错误
- unity3d - unity fps 跳跃与角色控制器
- laravel - laravel 5.2 在所有控制器中传递变量
- javascript - 使用相同的 HTML 模板/文件时重定向到不同的页面?
- swift - UICollectionView 在屏幕旋转时调整大小