如何通过spel中连接ArrayList of Strings来生成字符串?

问题描述 投票:0回答:3

我想使用 spel 从带有特定分隔符的字符串 ArrayList 形成一个新字符串。

list = ["a", "b", "c"]

我想从上面的列表中创建一个字符串 s = "a,b,c" 。

我尝试了很多表达方式,比如

StringUtils.join(list, ',')
list.stream().collect(Collectors.joining(','))
等等。 但每次我都会遇到错误

EL1008E: Property or field 'StringUtils' cannot be found on object of type 'java.util.LinkedHashMap' - maybe not public or not valid?

有什么办法可以用拼写来做到这一点吗?

java spring string concatenation spring-el
3个回答
0
投票

如果

StringUtils.join
是静态方法,则需要
T(com.my.StringUtils).join(...)
(也需要完整的类名)。


0
投票

我想我找到了答案,或者至少在 spinnaker 的 SpEL 中为我工作:

${ T(String).join(',', "a", "b" ,"c" )  }
"a,b,c"

对于我的特定用例来说,更好的是摆脱令人讨厌的空值:

${ T(String).join(',', ({"a", null ,"c"}.?[#this != null]) ) }
"a,c"

它甚至适用于:

${ T(String).join(' / ', someList )}
${ T(String).join(' / ', someSimpleMap.values() )}

(“简单地图”,我的意思是,单一深度,一组

A: B
,没有嵌套或其他复杂的地图。把冒险留给读者:)


-2
投票

你可以用这个代替

String lst[] = new String[]{"a","b","c"};
System.out.println(String.join(",",lst)); //here output will be a,b,c
© www.soinside.com 2019 - 2024. All rights reserved.