package org.geotools.misc; /** a utlity class to format numbers into strings. * specify a length and number of decimal places. * @author ian turton */ public class FormatedString { static boolean leadingzeros = false; public static final String format(double d){ return format(""+d,2); } public final static String format(int i){ return format(""+i,0); } public final static String format(int i,int len){ return format(""+i,0,len); } public static final String format(String in){ return format(in,2); } public final static String format(String in, int dp ,int len){ StringBuffer sb = new StringBuffer(); String s = format(in,dp).trim(); int diff = len - s.length(); for(int i=0;i < diff;i++) sb.append(" "); sb.append(s); return sb.toString(); } public final static String format(String in,int dp){ int e1 = in.indexOf('e'); int e2 = in.indexOf('E'); int e = Math.max(e1,e2); if(e>-1) in=expand(in,e); int i = in.lastIndexOf('.'); if(i!=-1){ String dec=""; String num=in.substring(0,i); if(dp>0){ if((i+dp+1)<in.length()){ dec=in.substring(i,i+dp+1); }else{ dec=in.substring(i); } }else{ dec=""; } while(dec.length()<dp+1)dec+="0"; if(dp==0) dec=""; if(!leadingzeros){ char [] tmp = num.toCharArray(); for(i=0;i<tmp.length-1;i++){ if(tmp[i]!='0'&&tmp[i]!=' ') break; if(tmp[i]=='0') tmp[i]=' '; if(tmp[i+1]=='.'&&tmp[i]==' ') tmp[i]='0'; } num = new String(tmp); } return(num+dec); }else{ String dec="."; while(dec.length()<dp+1)dec+="0"; if(dp==0) dec=""; if(!leadingzeros){ char [] tmp = in.toCharArray(); for(i=0;i<tmp.length-1;i++){ if(tmp[i]!='0'&&tmp[i]!=' ') break; if(tmp[i]=='0') tmp[i]=' '; if(tmp[i+1]=='.'&&tmp[i]==' ') tmp[i]='0'; } in = new String(tmp); } return(in+dec); } } private final static String expand(String s, int e){ String last = s.substring(e+1); String start = s.substring(0,e); int pow = Integer.parseInt(last); //System.out.println(start +" e "+last+" "+pow); int i = start.indexOf('.'); if(i>0){ int d = start.length()-i-1; String a = start.substring(0,i); start = a + start.substring(i+1); pow -= d; } for(i=0;i<pow;i++){ start+="0"; } for(i=pow;i<0;i++){ start = "0"+start; } if(pow<0){ int lp = start.length()+pow; //System.out.println(start+" x "+lp+" "+pow); start = start.substring(0,lp)+"."+start.substring(lp); } //System.out.println("->"+start); return start.trim(); } public static void main(String args[]){ System.out.println(args[0]+" "+FormatedString.format(args[0],6)); } }