如何解决如何在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 举报,一经查实,本站将立刻删除。