Java 自定义java.text.Format处理右对齐文本阅读,,RightFormat类
分享于 点击 23729 次 点评:167
Java 自定义java.text.Format处理右对齐文本阅读,,RightFormat类
RightFormat类从java.text.Format类继承。来处理右对齐的字段。 使用这个类结合NumberFormat、DateFormat就可以实现右对齐阅读体验。
RightFormat.java
import java.util.*;import java.text.*;public class RightFormat extends java.text.Format{ private int size; private char pad; public RightFormat(int fieldsize, char padchar) { if (fieldsize <= 1) throw new IllegalArgumentException("fieldsize must be > 1"); size = fieldsize; pad = padchar; } public RightFormat(int fieldsize) { this(fieldsize, ' '); } public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { String val; int ix; val = obj.toString(); for(ix = size; ix > val.length(); ix--) toAppendTo.append(pad); toAppendTo.append(val); return toAppendTo; } public Object parseObject(String source, ParsePosition status) { int start, end, ix; String ret = ""; end = status.getIndex() + size; start = status.getIndex(); for(ix = start; ix < end; ix++) { if (source.charAt(ix) != pad) break; } if (ix < end) { ret = source.substring(ix, end); } status.setIndex(end); return ret; }}
TestRight.java
import java.text.*;public class TestRight { public static void main(String args[]) { long f1 = 1; long f2 = 1; RightFormat rf = new RightFormat(20); System.out.println("Test of RightFormat(20) on Fibonacci numbers:"); for(int ix = 0; ix < 32; ix++) { System.out.println(rf.format(Long.toString(f1))); System.out.println(rf.format(Long.toString(f2))); f1 = f1 + f2; f2 = f2 + f1; } }}
用户点评