当前位置: 代码迷 >> J2SE >> Java字符串补齐,该怎么处理
  详细解决方案

Java字符串补齐,该怎么处理

热度:60   发布时间:2016-04-23 20:11:19.0
Java字符串补齐
有没有更简单快速的方法将字符串补齐,比如我计算一个字符串的长度,然后和默认长度进行比较,差多少就高位补齐,比如全部补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

但楼主你还是用二楼提供的方法吧,挺好使的
------解决思路----------------------
引用:
递归的效率比较差,家不如直接循环呢,还是不建议用额。呵呵,不过还是感谢。
Quote: 引用:

Quote: 引用:

有没有更简单快速的方法将字符串补齐,比如我计算一个字符串的长度,然后和默认长度进行比较,差多少就高位补齐,比如全部补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();
}

觉得上面的做法很别扭 有更简单的方法没。
用递归。。。。。。
public class StringTest {
public static String str = "123456789";
private static int length = 20;

public static void addStrLength(){
if(str.length() == length)
return;
str += 0;
addStrLength();
}
public static void main(String[] args) {
addStrLength();
System.out.println(str);
}
}
我光看到你不想用循环了,所以没考虑性能问题,就直接想到了递归,嘿嘿嘿。。。不过就是用的第三方库,它内部实现,也是循环的,或者是用正则,只是封装在StringUtils类里面,对于快速不快速还不好说,不过代码量少了很多,写起来方便了。。。。。。我倒是更赞成四楼的方法。。。。。。
------解决思路----------------------
System.arraycopy(originalChars, 0, chars, remaining, length)
  相关解决方案