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 閱讀(1134) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 许昌市| 托克逊县| 绥宁县| 达日县| 星子县| 东乌珠穆沁旗| 石泉县| 武义县| 沙洋县| 石棉县| 伊川县| 吉安县| 卓资县| 陕西省| 华宁县| 中江县| 多伦县| 兴宁市| 秦皇岛市| 三台县| 莎车县| 江都市| 佛坪县| 德惠市| 郑州市| 江口县| 固原市| 乌海市| 建德市| 炎陵县| 衡东县| 咸丰县| 宁国市| 新丰县| 正安县| 鄱阳县| 永和县| 昌江| 白朗县| 鹤壁市| 洪泽县|