[英]String split, filter and join in single line java 8
我有字符串,我想用逗號分隔並檢查每個字符串中的特定單詞,然后修剪然后加入它以創建新字符串
輸入:
"UC_Admin, Internal, UC_Reg, US_Admin"
所需的 Output:
"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(","));
使用Collectors.joining
作為字符串收集 output:
final String DELIMITER = ",";
final String input = "UC_Admin, Internal, UC_Reg, US_Admin";
String output = Arrays.stream(input.split(DELIMITER)) //split and stream
.filter(role -> role.contains("UC")) // filter in string containing 'UC'
.map(String::trim) // trim the strings
.collect(Collectors.joining(DELIMITER)); // join them back
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.