问题描述
我有一个问题。我可以使用 Dataweave 表达式将这样的数字修剪为:423230000000
到 42323
吗?
我尝试了一些东西,但都没有奏效。
解决方法
我从来没有听说过数字右边的零是不必要的。它们在数学上很重要,所以我猜你有非常特殊的要求。
无论如何,如果您绝对必须这样做,您可以使用此功能:
%dw 2.0
output application/json
var value=423230000000
fun removeLastZeros(x: String) =
(if (x[-1] == "0") removeLastZeros(x[0 to -2]) else x) as Number
---
removeLastZeros(value)
输出:42323
正如其他人提到的,如果确实需要这样做,您可以执行以下操作:
- 将数字视为字符串
- 反转它并将其转换回数字(使 0 无关紧要)
- 将结果数字视为字符串并再次反转
- 将最终字符串转换为数字(如果您需要将其作为数字)
查看下面的示例代码:
%dw 2.0
output application/json
var payload = 423230000000
---
((payload as String)[-1 to 0] as Number as String)[-1 to 0] as Number
这将导致 42323
。