数据编织中的条件级联

问题描述

有没有办法对字符串进行条件连接。例如,如果字符串具有值,则将其添加,但如果字符串为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')

enter image description here

,

我编写了一个函数,该函数采用将检查空值的字符串,要添加到前面的任何内容和要添加到后面的所有东西:

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")