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 }
关键说明
- 类型转换:必须先将字符串类型的数字转为
Number,否则格式化规则无法生效——DataWeave的格式化仅对数值类型生效。 - 区域与格式:指定
locale: "en-IN"(印度英语区域),配合格式模式#,##,###,会自动按照印度计数系统从右往左每两位分组(最左侧保留1-2位)。 - 函数封装:将格式化逻辑封装为函数,方便重复调用,提升代码可读性。
输出结果
{ "data": { "Final_band": { "min": "2,29,573", "max": "2,92,184" } }, "message": "Engine pricing details fetched successfully" }
内容的提问来源于stack exchange,提问作者jack
相关产品推荐
相关产品推荐

