有没有办法在 DataWeave 2.0 中修剪数字中不必要的零?

问题描述

我有一个问题。我可以使用 Dataweave 表达式将这样的数字修剪为:42323000000042323 吗?

我尝试了一些东西,但都没有奏效。

解决方法

我从来没有听说过数字右边的零是不必要的。它们在数学上很重要,所以我猜你有非常特殊的要求。

无论如何,如果您绝对必须这样做,您可以使用此功能:

%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

,

正如其他人提到的,如果确实需要这样做,您可以执行以下操作:

  1. 将数字视为字符串
  2. 反转它并将其转换回数字(使 0 无关紧要)
  3. 将结果数字视为字符串并再次反转
  4. 将最终字符串转换为数字(如果您需要将其作为数字)

查看下面的示例代码:

%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