如何在Groovy中减去整数并保留前导零?

问题描述

| 我有一个类似的代码:
def a = 2111 - 1112
//which calculates a as 999.
但是在以上结果中,我需要将
a
设为
0999
,即我需要in1ѭ中的前导零。我该怎么做?     

解决方法

        似乎应该有很多Groovy-er解决方案,但这是我能想到的最好的解决方案:
Integer.metaClass.sub = {
    def padTo = Math.max(delegate.toString().length(),it.toString().length())
    return (delegate - it).toString().padLeft(padTo,\'0\')
}

println 2111.sub(1112)
我怀疑您是否想实际更改\“-\”运算符的行为,但是如果您这样做,我认为最好改用String \的metaClass.subtract并使用\“ 2111 \”- \“ 1112 \”     ,        Groovy-er解决方案可能是:
Integer.metaClass.sub = { it,pad=[ \"$it\",\"$delegate\" ]*.length().max() ->
    \"${delegate - it}\".padLeft( pad,\'0\' )
}

println 2111.sub( 1112 )     // default padding
println 2111.sub( 1112,10 ) // pad to 10 chars
它将打印:
0999
0000000999
    ,        这是一种Java-y解决方案,但是只需要一行即可编写,并且可能是“预期”用法:
    def a = 2111 - 1112
    def formatted = String.format(\"%04d\",a)
    println \"Number with leading zeroes: \" + formatted //Prints 0999
String的第一个参数包括所需的位数。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...