posts - 41,  comments - 40,  trackbacks - 0

          /*******************************************************************************
          ?*
          ?* 對數字或文件名排列
          ?*
          ?* 沒有考慮漢字顯示時占兩個位置的情況,即對文件名處理不太好
          ?*
          ?* 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 閱讀(1135) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 姜堰市| 浦江县| 公主岭市| 宁夏| 玛曲县| 东乌珠穆沁旗| 万荣县| 伊通| 丰原市| 广安市| 婺源县| 积石山| 古蔺县| 萝北县| 鹿泉市| 定边县| 南靖县| 平谷区| 金乡县| 彰化县| 通化县| 靖安县| 巴楚县| 红桥区| 建湖县| 澄江县| 丰宁| 读书| 曲沃县| 清河县| 赤城县| 木兰县| 长兴县| 和龙市| 河津市| 喀什市| 百色市| 广德县| 车致| 宝鸡市| 东乡县|