是否有像Apache Commons StringUtils这样的现有实用程序可以很容易地增加整数,但是将其输出为零填充字符串?
我当然可以利用像String.format("%05d", counter)
这样的东西来编写自己的东西,但我想知道是否有一个已经可用的库。
我正在设想一些我可以这样使用的东西:
// Create int counter with value of 0 padded to 4 digits
PaddedInt counter = new PaddedInt(0,4);
counter.incr();
// Print "0001"
System.out.println(counter);
// Print "0002"
System.out.println(counter.incr());
String text = "The counter is now "+counter.decr();
// Print "The counter is now 0001"
System.out.println(text);
答案 0 :(得分:1)
我怀疑你会发现任何事情要做,因为填充和递增是两个不相关的基本操作,而且实现起来很简单。你可以在编写问题时用三次实现这样的课程。这一切都归结为将int包装到一个对象中并使用String.format
实现toString。
答案 1 :(得分:1)
如果有人有兴趣,我在发布问题后几分钟就把它扔了:
import org.apache.commons.lang.StringUtils;
public class Counter {
private int value;
private int padding;
public Counter() {
this(0, 4);
}
public Counter(int value) {
this(value, 4);
}
public Counter(int value, int padding) {
this.value = value;
this.padding = padding;
}
public Counter incr() {
this.value++;
return this;
}
public Counter decr() {
this.value--;
return this;
}
@Override
public String toString() {
return StringUtils.leftPad(Integer.toString(this.value),
this.padding, "0");
// OR without StringUtils:
// return String.format("%0"+this.padding+"d", this.value);
}
}
唯一的问题是我必须调用toString()
来获取字符串,或将其附加到""+counter
之类的字符串中:
@Test
public void testCounter() {
Counter counter = new Counter();
assertThat("0000", is(counter.toString()));
counter.incr();
assertThat("0001",is(""+counter));
assertThat("0002",is(counter.incr().toString()));
assertThat("0001",is(""+counter.decr()));
assertThat("001",is(not(counter.toString())));
}
答案 2 :(得分:0)
老实说,我认为你在混合不同的问题。整数是一个包含所有操作的整数,如果要输出,则用零填充不同的东西。
您可能希望查看StringUtils.leftPad
作为String.format
的替代方案。