我想使用 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?
有什么办法可以用拼写来做到这一点吗?
如果
StringUtils.join
是静态方法,则需要 T(com.my.StringUtils).join(...)
(也需要完整的类名)。
我想我找到了答案,或者至少在 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
,没有嵌套或其他复杂的地图。把冒险留给读者:)
你可以用这个代替
String lst[] = new String[]{"a","b","c"};
System.out.println(String.join(",",lst)); //here output will be a,b,c