【问题标题】:Padding zeros on mulesoft在 mulesoft 上填充零
【发布时间】:2016-10-05 11:47:56
【问题描述】:

我只是想知道是否可以使用 datamapper/dataweave 发出格式字符串以在数字上具有固定长度并填充零来完成长度?

类似

String.format("%056", variable_number);

我在 datamapper 上试过这个,但它不起作用。我错过了什么?

【问题讨论】:

    标签: mule padding datamapper dataweave


    【解决方案1】:

    要满足此要求,请致电Global MEL Functions from DataWeave

    全局 MEL 函数:

    <configuration doc:name="Configuration">
        <expression-language>
            <global-functions>
                def zeroPad(variable_number) {
                    String.format("%05d", variable_number);
                }
            </global-functions>
        </expression-language>
    </configuration>
    

    DataWeave 脚本:

    %dw 1.0
    %output application/json
    ---
    {
        result: zeroPad(123)
    }
    

    【讨论】:

    • 嗨 sulthony 我试过这个解决方案,但是当我使用调试器时它挂了。它仍然产生非填充字符串
    【解决方案2】:

    D,

    在 dataweave 中,您可以简单地将数字格式化为 -

    data: 5 as :string {format:"00000"}
    

    这将输出00005。如果原始长度小于 0 的个数,数字将用 0 填充。 例如。 123 -> 00123.

    希望有帮助!

    【讨论】:

    • 嗨 Manik,我仍然没有得到填充版本。它是字符串到字符串的映射,不确定是否重要。 'BaleNumber: bale.ns0#BaleNumber as :string {format:"00000"}'
    • @PaulD。如果您的输入是字符串,则将第一个 'data: ('5' as :number) 编号为 :string {format: '00000'}'
    • 甚至不需要括号;)
    【解决方案3】:

    我有类似的要求并通过首先转换为字符串作为使用带零的格式来完成。

    上面给出的答案有效 数据:5 as :string {format:"00000"}

    如果由于某种原因您无法使用 dataweave 操作符,您可以通过使用 java 库编写全局函数并从 dataweave 调用它们来实现。

    【讨论】:

      【解决方案4】:

      在 Dataweave 中简单地定义 like

      Field: "12" as :number {format: "0000"}
      

      输出将类似于0012

      【讨论】:

        猜你喜欢
        • 2021-06-25
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多