请问有什么方法可以指定字符串长度,不够的自动补空格

liu124983205 2009-09-21 04:15:52
比如长度1000,如果只有三个字符abc 后面自动补997个空格
...全文
2587 50 打赏 收藏 转发到动态 举报
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
约翰羊 2010-11-18
  • 打赏
  • 举报
回复

回复,10分走人。
mic47 2010-11-18
  • 打赏
  • 举报
回复
能详细讲解下吗?
我知道这是返回一个格式化的字符串。
api中是public static String format(String format,
Object... args)
String是那个基本的字符串,arg貌似是格式?
看不懂啊?

[Quote=引用 39 楼 soft_dep 的回复:]
String.format("%-1000s", "abc");
正负号可以控制空格符是添加到abc之前还是之后
[/Quote]
piero23 2010-11-17
  • 打赏
  • 举报
回复
谢谢!!!楼上的各位!!
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
第一步,这个问题有必要么?第二步,楼主设计的方法是否正确?
zhyh0726 2010-09-30
  • 打赏
  • 举报
回复
public class test
{
public static void main(String agrs[])
{
String ba="abc";
String result_ba="";
result_ba= String.format ("%-1000s", ba);
System.out.println (result_ba);
}

}



clariones 2010-09-30
  • 打赏
  • 举报
回复
刚开始我觉得csdn咋现在竟出些开玩笑的人,看到后来终于看到有人正经起来了
qingralf 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 andycpp 的回复:]
Java code

String str = "abc";
str = String.format("%1$-1000s", str);
[/Quote]
不错
yirankiller 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 djbcainiao 的回复:]
反过来想啊,
你有一个String 1000个空格的String
那你就想用的时候在String前面加你的字符串啊,长度不就是1000吗前面是你的字符串后面是空格啊,不用循环加空格啊,完全可以生成一个1000个空格的String就行啦
[/Quote]
哥也是这么想地
qianquan 2010-09-29
  • 打赏
  • 举报
回复
关注中。。。
andycpp 2010-09-29
  • 打赏
  • 举报
回复

String str = "abc";
str = String.format("%1$-1000s", str);
zcy9979420 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 qingralf 的回复:]

引用 35 楼 andycpp 的回复:
Java code

String str = "abc";
str = String.format("%1$-1000s", str);

不错
[/Quote]

+1
GK20182 2010-09-29
  • 打赏
  • 举报
回复
我来翻老帖了。

总结了楼上的两个方法:


public static void main(String[] args) {
String g = "Ganky";
long l = System.currentTimeMillis();
formatStr(g,10000000,'0');
System.out.println(System.currentTimeMillis()-l);
l = System.currentTimeMillis();
rightPad(g,10000000,'0');
System.out.println(System.currentTimeMillis()-l);
}

public static String rightPad(String text, int length, char c) {
char[] array = new char[length];
System.arraycopy(text.toCharArray(), 0, array, 0, text.length());
Arrays.fill(array, text.length(), length, c);
return new String(array);
}

public static String formatStr(String str, int length, char c) {
StringBuffer sb = new StringBuffer(str);
length = length - str.length();
for(int i=0;i<length;i++) {
sb.append(c);
}
return sb.toString();
}



经过简单的测试(1000W长度),rightPad方法效率高出不少,相差近10倍
如果单纯是LZ要求的1000长度的话,基本上没差别(1毫秒以内)
kahnnash 2010-09-29
  • 打赏
  • 举报
回复
ding............
njnjmkmk 2010-09-29
  • 打赏
  • 举报
回复
ding ..............
Soft_dep 2010-09-29
  • 打赏
  • 举报
回复
String.format("%-1000s", "abc");
正负号可以控制空格符是添加到abc之前还是之后
shan1119 2009-09-21
  • 打赏
  • 举报
回复
new String(new char[10]).replace((new char[1])[0], ' ')

跟19楼基本类似
  • 打赏
  • 举报
回复
貌似是有点简单

建立一个字符串initStr里面是n个空格,然后自己要添加的字符串为string,把字符串复制到前面就可以了
  • 打赏
  • 举报
回复
public class Test {

public static void main(String[] args) {
String str = "abc";
long t0, t1;
t0 = System.nanoTime();
str = appendSpace(str, 5, false);
t1 = System.nanoTime();
System.out.println("|" + str + "|");
System.out.println((t1 - t0) + " ns");
}

private static String appendSpace(String str, int spaceCount, boolean appendHead) {
char[] chs = new char[str.length() + spaceCount];
for(int i = appendHead ? 0 : str.length(), j = 0; j < spaceCount; j++) {
chs[i++] = ' ';
}
System.arraycopy(str.toCharArray(), 0, chs, appendHead ? spaceCount : 0, str.length());
return new String(chs);
}
}
lsd123 2009-09-21
  • 打赏
  • 举报
回复
bigbug9002 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 liu124983205 的回复:]
jdk6 才有 。。。
[/Quote]

char数组自动补的是'a'吧?
加载更多回复(28)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧