问题描述
有没有办法对字符串进行条件连接。例如,如果字符串具有值,则将其添加,但如果字符串为null,则不添加。我正在创建一个长字符串,它将成为电子邮件的正文。 “ payload.eachRecipient.company”字段可以有一个值或可以为null。我只想在电子邮件中包含该值的行,如果没有该值,则不显示“公司名称:”行。
payload.eachRecipient.city ++ "," ++ payload.eachRecipient.state ++ " " ++ payload.eachRecipient.zipCode ++ "\n\n" ++
("Company Name: " ++ payload.eachRecipient.company (if payload.eachRecipient.company?)) ++ "\n" ++ "ID: " ++ payload.eachRecipient.sson ++ "\n" ++ "System Order Number: " ++ payload.eachRecipient.orderNum ++ "\n\n" ++
"Shipping Method: " ++ payload.eachRecipient.ShipVia ++ "\n\n" ++ "Order Summary:\n" ++ (vars.listofMaterials.combinedString joinBy("\n")) ++
解决方法
有条件的串联效果很好
%dw 2.0
output application/json
---
'one '
++ ' two '
++ (if (true) ' three' else ' THREE')
++ (if (false) ' four' else ' FOUR')
,
我编写了一个函数,该函数采用将检查空值的字符串,要添加到前面的任何内容和要添加到后面的所有东西:
fun checkNull(aString,aFront,aBack) =
if (aString == null)
""
else
aFront ++ aString ++ aBack
该函数的结果连接到较长的字符串中:
(checkNull(payload.eachRecipient.company,"Company Name: ","\n"))
checkNull(payload.eachRecipient.line2,"","\n\t")