微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在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的第一个参数包括所需的位数。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。