Leftpad Zeros с клетчатым воротником на шнуровке 4

<LineProcessInfo>
  <LineRefTextField1>JPY</LineRefTextField1>
  <LineRefTextField2>[MW09449_ _048]</LineRefTextField2>
  <LineRefTextField3>[00_L]</LineRefTextField3>
  <LineRefTextField4></LineRefTextField4>
  <LineRefTextField5>AS LAMBSWOOL VNECK</LineRefTextField5>
  <LineRefTextField6>Jet Black Heath</LineRefTextField6>
  <LineRefTextField7></LineRefTextField7>
  <LineRefTextField8>WH01</LineRefTextField8>
  <LineRefTextField9></LineRefTextField9>
  <LineRefTextField10></LineRefTextField10>
  <LineRefNumberField1></LineRefNumberField1>
  <LineRefNumberField2></LineRefNumberField2>
  <LineRefNumberField3>22</LineRefNumberField3>
  <LineRefNumberField4></LineRefNumberField4>
  <LineRefNumberField5></LineRefNumberField5>
</LineProcessInfo> 

значение: если (LineItem.LineProcessInfo.LineRefNumberField3! = null) (LineItem.LineProcessInfo.LineRefNumberField3) else ""

Для LineRefNumberField3 длина должна быть 5, и если она меньше 5, то заполняйте нули слева, мне нужно получить 00022, пожалуйста, предложите, как этого добиться.


person Nag    schedule 09.01.2020    source источник


Ответы (1)


Вы можете использовать leftPad, как описано в https://docs.mulesoft.com/mule-runtime/4.2/dw-strings-functions-leftpad.

Пример кода ниже:

%dw 2.0
output application/json

import * from dw::core::Strings

var payload = read("<LineProcessInfo><LineRefTextField1>JPY</LineRefTextField1>
          <LineRefTextField2>[MW09449_ _048]</LineRefTextField2>
          <LineRefTextField3>[00_L]</LineRefTextField3>
          <LineRefTextField4></LineRefTextField4>
          <LineRefTextField5>AS LAMBSWOOL VNECK</LineRefTextField5>
          <LineRefTextField6>Jet Black Heath</LineRefTextField6>
          <LineRefTextField7></LineRefTextField7>
          <LineRefTextField8>WH01</LineRefTextField8>
          <LineRefTextField9></LineRefTextField9>
          <LineRefTextField10></LineRefTextField10>
          <LineRefNumberField1></LineRefNumberField1>
          <LineRefNumberField2></LineRefNumberField2>
          <LineRefNumberField3>22</LineRefNumberField3>
          <LineRefNumberField4></LineRefNumberField4>
          <LineRefNumberField5></LineRefNumberField5>
        </LineProcessInfo>", "application/xml")
---

{
    LineRefNumberField3: leftPad(payload.LineProcessInfo.LineRefNumberField3, 5, "0") default ""
}

Изменить: при использовании Mule Runtime v4.1.x

(payload.LineProcessInfo.LineRefNumberField3 as Number default "") as String {format : "00000"}
person oim    schedule 09.01.2020
comment
import * from dw :: core :: Strings это не работает для среды выполнения Mule 4.1.5. Подскажите пожалуйста что нужно добавить - person Nag; 27.01.2020
comment
import * from dw :: core :: Strings это не работает для среды выполнения Mule 4.1.5. он работает для 4.2.1, но я не могу использовать 4.2.1 в соответствии с требованиями клиента. Пожалуйста, предложите. - person Nag; 27.01.2020