从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder
。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
以下方法功能
sprintf0d(sb,123,5)-->00123
sprintf0d(sb,-123,5)-->-0123
/**
* 前ゼロを付加した結果を返する<BR>
*
* @param arg
* 文字列
* @param arg1
* int
* @param arg2
* 変換後、この値の長度
* @return arg 前ゼロを付加した文字列
*/
public static final StringBuilder sprintf0d(StringBuilder arg, int arg1,
int arg2) {
long tempArg1 = (long) arg1;
return arg = sprintf0d(arg, tempArg1, arg2);
}
/**
* 前ゼロを付加した結果を返する<BR>
*
* @param arg
* 文字列
* @param arg1
* long
* @param arg2
* 変換後、この値の長度
* @return arg 前ゼロを付加した文字列
*/
public static final StringBuilder sprintf0d(StringBuilder arg, long arg1,
int arg2) {
boolean flag = false;
int tempLength;
String temp = "";
int j = 0;
if (arg2 <= 0) {
return arg;
}
if (arg1 < 0) {
flag = true;
arg1 = Math.abs(arg1);
j = 1;
}
temp = String.valueOf(arg1);
tempLength = arg2 - temp.length() - j;
for (int i = 0; i < tempLength; i++) {
temp = "0" + temp;
}
if (flag == true) {
temp = "-" + temp;
}
arg.append(temp);
return arg;
}
///
StringBuilder
/**
* add zeros before the number.
* @param sb
* @param num
* @param len
* @return
*/
public static final StringBuilder sprintf0d(StringBuilder sb, long num, int len) {
long lng = num;
if (lng < 0L) {
sb.append('-');
lng = -lng;
len--;
}
long k = 10L;
for (int i1 = 2; i1 < len; i1++) {
k *= 10;
}
for (int j1 = 1; j1 < len && lng < (long) k; j1++) {
sb.append('0');
k /= 10;
}
sb.append(lng);
return sb;
}
/**
* add zeros before the number.
* @param sb
* @param num
* @param len
* @return
*/
public static StringBuffer sprintf0d(StringBuffer sb, long num, int len ,int in) {
long lng = num;
if (lng < 0L) {
sb.append('-');
lng = -lng;
len--;
}
long k = 10L;
for (int i1 = 2; i1 < len; i1++) {
k *= 10;
}
for (int j1 = 1; j1 < len && lng < (long) k; j1++) {
sb.append('0');
k /= 10;
}
sb.append(lng);
return sb;
}