You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4中如何将六位数字格式化为印度式千位分隔符字符串?

解决DataWeave 2.0印度计数格式数字格式化问题

问题场景

给定输入Payload:

{
    "data": {
        "Final_band": {
            "min": "229573",
            "max": "292184"
        }
    },
    "message": "Engine pricing details fetched successfully"
}

需要将min和max的字符串数字转换为印度计数系统格式(如229573→2,29,573,292184→2,92,184)。

解决方案代码

使用DataWeave 2.0的区域化格式化能力,结合字符串转数字的步骤实现:

%dw 2.0
output application/json

// 封装印度数字格式化函数
fun formatIndianNum(numStr: String): String = 
    numStr as Number as String {format: "#,##,###", locale: "en-IN"}
---
{
    data: {
        Final_band: {
            min: formatIndianNum(payload.data.Final_band.min),
            max: formatIndianNum(payload.data.Final_band.max)
        }
    },
    message: payload.message
}

关键说明

  1. 类型转换:必须先将字符串类型的数字转为Number,否则格式化规则无法生效——DataWeave的格式化仅对数值类型生效。
  2. 区域与格式:指定locale: "en-IN"(印度英语区域),配合格式模式#,##,###,会自动按照印度计数系统从右往左每两位分组(最左侧保留1-2位)。
  3. 函数封装:将格式化逻辑封装为函数,方便重复调用,提升代码可读性。

输出结果

{
  "data": {
    "Final_band": {
      "min": "2,29,573",
      "max": "2,92,184"
    }
  },
  "message": "Engine pricing details fetched successfully"
}

内容的提问来源于stack exchange,提问作者jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:50:32