问题描述
比如长度1000,如果只有三个字符abc后面自动补997个空格
解决方案
解决方案二:
tooeasy用大腿想想吧.
解决方案三:
引用1楼bigbug9002的回复:
tooeasy用大腿想想吧.
哈哈
解决方案四:
别说循环加空格。。。
解决方案五:
引用2楼amdgaming的回复:
引用1楼bigbug9002的回复:tooeasy用大腿想想吧.哈哈
这位仁兄的头像意思是?
解决方案六:
谁能说下啊,怎么定义这样的字符串~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
解决方案七:
可以写一个方法来实现:publicstaticStringformatStr(Stringstr,intlength){if(str==null){returnnull;}intstrLen=str.length();if(strLen==length){returnstr;}elseif(strLen<length){inttemp=length-strLen;Stringtem="";for(inti=0;i<temp;i++){tem=tem+"";}returnstr+tem;}else{returnstr.substring(0,length);}}
解决方案八:
其中第一个参数为欲修改的字符串,第二个参数是想要的长度。
解决方案九:
比如长度2000的字符串实际只有3个字符,那么要加循环1997加空格操作,是不是效率会很低
解决方案十:
有没有什么方法能在初始化的时候就解决掉?
解决方案十一:
我想知道为什么需要这样一个字符串
解决方案十二:
publicstaticStringrightPad(Stringtext,intlength,charc){char[]array=newchar[length];Arrays.fill(array,c);System.arraycopy(text.toCharArray(),0,array,0,text.length());returnnewString(array);}没有做相关参数check
解决方案十三:
publicstaticStringrightPad(Stringtext,intlength,charc){char[]array=newchar[length];Arrays.fill(array,text.length(),length,c);System.arraycopy(text.toCharArray(),0,array,0,text.length());returnnewString(array);}
更正一下
解决方案十四:
简单的说字符串在1000~2000之间就会报错,现在想加空格,然后用的时候再trim,避免这个区间
解决方案十五:
反过来想啊,你有一个String1000个空格的String那你就想用的时候在String前面加你的字符串啊,长度不就是1000吗前面是你的字符串后面是空格啊,不用循环加空格啊,完全可以生成一个1000个空格的String就行啦
解决方案:
引用4楼husheng86的回复:
引用2楼amdgaming的回复:引用1楼bigbug9002的回复:tooeasy用大腿想想吧.哈哈这位仁兄的头像意思是?
比较喜欢研究象棋算法而已。。。
解决方案:
怎么初始化一个长度1000个空格的字符串??不会是一个一个打吧?还是用循环加空格初始化?又回来了不是。。
解决方案:
11#方法不错,我也写一个:publicclassSimpleTest{publicstaticStringformatString(Stringstr,intlength,Stringslot){StringBuffersb=newStringBuffer();sb.append(str);intcount=length-str.length();while(count>0){sb.append(slot);count--;}returnsb.toString();}publicstaticvoidmain(String[]args){Stringstr="abc";System.out.println(formatString(str,1000,"0"));}}
解决方案:
如果你不循环,难道你想一个字一个字地敲吗?
解决方案:
用循环有什么不好?不用循环就这样来:Stringstr="abc";Stringresult=newString(Arrays.copyOf(str.toCharArray(),30)).replaceAll(""+(char)0,"");System.out.println(result+"|");这是一个指定是30长度的字符串,可以把30用1000替换掉。注意,如果str长度超过30,将被截为30.
解决方案:
循环感觉效率会很低
解决方案:
难道是为了Oracle里的Long类型?17楼的好
解决方案:
你确定Arrays有copyOf方法吗
解决方案:
clob类型。。
解决方案:
引用20楼liu124983205的回复:
循环感觉效率会很低
你真是太搞笑了循环1000次就效率低了?难道Java为了方便事先给你构造好一个长度1000的字符串给你用吗?看下面的代码:longl=System.currentTimeMillis();formatString(str,10000000,"0");//循环1千w次System.out.println(System.currentTimeMillis()-l);
时间不到1s钟。
解决方案:
引用22楼liu124983205的回复:
你确定Arrays有copyOf方法吗
你先查查API再问可以吗?
解决方案:
C定义的char数组就可以自动补空格
解决方案:
jdk6才有。。。
解决方案:
引用26楼liu124983205的回复:
C定义的char数组就可以自动补空格
Java也可以
解决方案:
引用27楼liu124983205的回复:
jdk6才有。。。
char数组自动补的是'a'吧?
解决方案:
。
解决方案:
publicclassTest{publicstaticvoidmain(String[]args){Stringstr="abc";longt0,t1;t0=System.nanoTime();str=appendSpace(str,5,false);t1=System.nanoTime();System.out.println("|"+str+"|");System.out.println((t1-t0)+"ns");}privatestaticStringappendSpace(Stringstr,intspaceCount,booleanappendHead){char[]chs=newchar[str.length()+spaceCount];for(inti=appendHead?0:str.length(),j=0;j<spaceCount;j++){chs[i++]='';}System.arraycopy(str.toCharArray(),0,chs,appendHead?spaceCount:0,str.length());returnnewString(chs);}}
解决方案:
貌似是有点简单建立一个字符串initStr里面是n个空格,然后自己要添加的字符串为string,把字符串复制到前面就可以了
解决方案:
newString(newchar[10]).replace((newchar[1])[0],'')
跟19楼基本类似
解决方案:
我来翻老帖了。总结了楼上的两个方法:publicstaticvoidmain(String[]args){Stringg="Ganky";longl=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);}publicstaticStringrightPad(Stringtext,intlength,charc){char[]array=newchar[length];System.arraycopy(text.toCharArray(),0,array,0,text.length());Arrays.fill(array,text.length(),length,c);returnnewString(array);}publicstaticStringformatStr(Stringstr,intlength,charc){StringBuffersb=newStringBuffer(str);length=length-str.length();for(inti=0;i<length;i++){sb.append(c);}returnsb.toString();}
经过简单的测试(1000W长度),rightPad方法效率高出不少,相差近10倍如果单纯是LZ要求的1000长度的话,基本上没差别(1毫秒以内)
解决方案:
Stringstr="abc";str=String.format("%1$-1000s",str);
解决方案:
关注中。。。
解决方案:
引用14楼djbcainiao的回复:
反过来想啊,你有一个String1000个空格的String那你就想用的时候在String前面加你的字符串啊,长度不就是1000吗前面是你的字符串后面是空格啊,不用循环加空格啊,完全可以生成一个1000个空格的String就行啦
哥也是这么想地
解决方案:
引用35楼andycpp的回复:
JavacodeStringstr="abc";str=String.format("%1$-1000s",str);
不错
解决方案:
String.format("%-1000s","abc");正负号可以控制空格符是添加到abc之前还是之后
解决方案:
该回复于2010-09-30 10:01:10被版主删除
解决方案:
ding..............
解决方案:
ding............
解决方案:
引用38楼qingralf的回复:
引用35楼andycpp的回复:JavacodeStringstr="abc";str=String.format("%1$-1000s",str);不错
+1
解决方案:
该回复于2010-09-30 09:48:29被版主删除
解决方案:
刚开始我觉得csdn咋现在竟出些开玩笑的人,看到后来终于看到有人正经起来了
解决方案:
publicclasstest{publicstaticvoidmain(Stringagrs[]){Stringba="abc";Stringresult_ba="";result_ba=String.format("%-1000s",ba);System.out.println(result_ba);}}
解决方案:
第一步,这个问题有必要么?第二步,楼主设计的方法是否正确?
解决方案:
谢谢!!!楼上的各位!!
解决方案:
能详细讲解下吗?我知道这是返回一个格式化的字符串。api中是publicstaticStringformat(Stringformat,Object...args)String是那个基本的字符串,arg貌似是格式?看不懂啊?引用39楼soft_dep的回复:
String.format("%-1000s","abc");正负号可以控制空格符是添加到abc之前还是之后
解决方案:
顶回复,10分走人。