/*******************************************************************************
*
* 对数字或文件名排列
*
* 没有考虑汉字显示时占两个位置的情况,即对文件名处理不太好
*
* Author: NeedJava
*
* Modified: 2007.09.09
*
******************************************************************************/
public final class DotAlign
{
private DotAlign(){}
private static final String align( String string,
char prefix,
char suffix,
int prefixLength,
int suffixLength,
boolean isNumber )
{
if( string==null||string.equals( "" )||string.equals( "." )||prefixLength<0||suffixLength<0 )
{
return string;
}
//如果没有小数,那么按照常理,小数点也应该省略
char[] buffer=new char[( suffixLength>0 ? prefixLength+1+suffixLength : prefixLength )];
int stringLength=string.length();
int dot=stringLength-1;
//找到小数点位置,可以用lastIndexOf()代替
while( dot>-1 )
{
if( string.charAt( dot-- )=='.' )
{
dot++;
break;
}
}
//System.out.print( Integer.toString( dot )+"\t" );
//★整数部分,从小数点左位向左移
int pointer=( dot>-1 ? dot-1 : stringLength-1 );
for( int i=prefixLength-1; i>-1; i-- )
{
if( pointer>-1 )
{
buffer[i]=string.charAt( pointer-- );
}
else{ buffer[i]=prefix;
}
}
//如果没有小数部分,那么按照常理,小数点应该省略
if( suffixLength>0 )
{
//★小数点
buffer[prefixLength]=( dot>-1||isNumber ? '.' : suffix );
//★小数部分,从小数点右位向右移
pointer=( dot>-1 ? dot+1 : stringLength );
for( int i=prefixLength+1; i<buffer.length; i++ )
{
if( pointer<stringLength )
{
buffer[i]=string.charAt( pointer++ );
}
else{ buffer[i]=suffix;
}
}
}
return new String( buffer );
}
public final static void main( String[] args )
{
System.out.println( "\r\n-------------------------------------------\r\n" );
String[] number={ "",
".",
".5",
".56",
".567",
".5678",
"1234",
"1234.",
"1234.5",
"1234.56",
"1234.567",
"1234.5678" };
for( int i=0; i<number.length; i++ )
{
System.out.println( "["+DotAlign.align( number[i], ' ', '0', 7, 2, true )+"] ["+number[i]+"]" );
}
System.out.println( "\r\n-------------------------------------------\r\n" );
String[] file={ "",
".",
".j",
".jp",
".jpe",
".jpeg",
"1234",
"1234.",
"1234.j",
"1234.jp",
"1234.jpe",
"1234.jpeg" };
for( int i=0; i<file.length; i++ )
{
System.out.println( "["+DotAlign.align( file[i], ' ', ' ', 7, 5, false )+"] ["+file[i]+"]" );
}
System.out.println( "\r\n-------------------------------------------\r\n" );
}
}
posted on 2007-09-14 00:17
NeedJava 阅读(1120)
评论(0) 编辑 收藏 所属分类:
Java