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 閱讀(1138) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 鄂托克前旗| 慈溪市| 本溪| 青阳县| 石狮市| 两当县| 安西县| 邹城市| 阜平县| 丽江市| 石狮市| 佛冈县| 象州县| 攀枝花市| 内丘县| 清苑县| 勃利县| 乡宁县| 牙克石市| 稷山县| 家居| 雷山县| 宜州市| 德惠市| 天祝| 崇州市| 辽中县| 峨眉山市| 屏山县| 凉城县| 秦皇岛市| 永年县| 勐海县| 朝阳市| 凯里市| 策勒县| 灌南县| 醴陵市| 高州市| 永胜县| 宝鸡市|