有没有更简单快速的方法将字符串补齐,比如我计算一个字符串的长度,然后和默认长度进行比较,差多少就高位补齐,比如全部补0.有更快的方法吗?除了循环。
public String transeferStr(String orgin)
{
int poslength = 30;
int length = orgin.length();
int remaining = poslength - length;
if(remaining > 0)
{
StringBuilder sb = new StringBuilder();
for(int i = 0;i < remaining ;i++)
{
sb .append(0);
}
sb.append(orgin);
return sb.toString();
}
return orgin.toString();
}
觉得上面的做法很别扭 有更简单的方法没。
------解决思路----------------------
一般而言不能再快了
------解决思路----------------------
更快的可能没有了 不过你可以试试org.apache.commons.lang.StringUtils这个类
String test ="3123123";
String value = StringUtils.leftPad(test, 10, "0");
ystem.out.println(value);
结果就是0003123123
------解决思路----------------------
2楼无疑是最佳方法,但是如果你只想用jdk里的api的话,我有个方法:
package testPackage;
public class StringTest {
public static void main(String[] args) {
//假设必须15位长
int fullLength = 15;
//假设输入123456
StringBuilder input = new StringBuilder("123456");
//预先定义一个15位0
StringBuilder zero = new StringBuilder("000000000000000");
String result = zero.substring(0, zero.length() - input.length()) + input;
System.out.println(result);
}
}
------解决思路----------------------
二楼的方法挺不好的,apache的那几个工具包挺好使的,不过String类下就有一个格式化的方法:
String str = "gr";
String res = String.format("%5s", str);
res = res.replaceAll("\\s", "1");
System.out.println(res);//----------结果:111gr
但楼主你还是用二楼提供的方法吧,挺好使的
------解决思路----------------------
我光看到你不想用循环了,所以没考虑性能问题,就直接想到了递归,嘿嘿嘿。。。不过就是用的第三方库,它内部实现,也是循环的,或者是用正则,只是封装在StringUtils类里面,对于快速不快速还不好说,不过代码量少了很多,写起来方便了。。。。。。我倒是更赞成四楼的方法。。。。。。
------解决思路----------------------
System.arraycopy(originalChars, 0, chars, remaining, length)