字符串对齐器

  1 package com.jdk7.chapter5;
  2
  3 public class StringAlignTest {
  4     //用于默认构造函数中对齐方式,以及switch时的case
  5     public static final int LEFT = 0;
  6     public static final int CENTER = 1;
  7     public static final int RIGHT = 2;
  8
  9     //初始化值用于清空缓存值
 10     private int just = -1;
 11     private int maxChar = -1;
 12
 13     //默认构造函数
 14     public StringAlignTest(){
 15         this.just = CENTER;
 16         this.maxChar = 80;
 17     }
 18
 19     //带参构造函数,先调用一个默认构造函数,如果参数不符合,则可以调用默认构造函数赋的值
 20     public StringAlignTest(int just, int maxChar){
 21         //如果注释默认构造函数,且自定义传入的参数都不符合条件则不会调用对齐方式函数format
 22         this();
 23         this.setJust(just);
 24         this.setMaxChar(maxChar);
 25     }
 26
 27     public String format(String str){
 28         if(str==null){
 29             System.out.println("string cannot be null!");
 30         }
 31         StringBuffer sb = new StringBuffer();
 32         int wantedLength = Math.min(str.length(), this.maxChar);
 33         String want = str.substring(0, wantedLength);
 34         switch(this.just){
 35         case LEFT:
 36             sb.append(want);
 37             pad(sb,this.maxChar-wantedLength);
 38             break;
 39
 40         case CENTER:
 41             int num = (this.maxChar-wantedLength)/2;
 42             pad(sb,num);
 43             sb.append(want);
 44             pad(sb,num);
 45             break;
 46
 47         case RIGHT:
 48             pad(sb,this.maxChar-wantedLength);
 49             sb.append(want);
 50             break;
 51         }
 52         if(str.length()>this.maxChar){
 53             sb.append("\n");
 54             //将原始字符串分为两段,第一段为最大长度的行,另一段为剩下的字符串,把剩下的字符串循环作为原始字符串直到完成所有的换行
 55             String reformat = str.substring(wantedLength);
 56             sb.append(this.format(reformat));
 57         }
 58         return sb.toString();
 59     }
 60
 61     protected final void pad(StringBuffer s, int howMany){
 62         for(int i=0;i<howMany;i++){
 63             s.append(" ");
 64         }
 65     }
 66
 67     public int getJust() {
 68         return just;
 69     }
 70
 71     public void setJust(int just) {
 72         switch(just){
 73         case LEFT:
 74         case CENTER:
 75         case RIGHT:
 76             this.just = just;
 77             break;
 78         default:
 79             System.out.println("Invilid just!");
 80         }
 81     }
 82
 83     public int getMaxChar() {
 84         return maxChar;
 85     }
 86
 87     public void setMaxChar(int maxChar) {
 88         if(maxChar<=0){
 89             System.out.println("maxChar number must be more than zore!");
 90         }else{
 91             this.maxChar = maxChar;
 92         }
 93     }
 94
 95     public static void main(String[] args) {
 96         StringAlignTest sat = new StringAlignTest();
 97         StringAlignTest sat1 = new StringAlignTest(5, 150);
 98
 99         String str = "The class Math contains methods for performing basic numeric operations such as the elementary "
100                 + "exponential, logarithm, square root, and trigonometric functions. The quality of implementation "
101                 + "specifications concern two properties, accuracy of the returned result and monotonicity of the";
102         System.out.println("===============默认对齐方式======================");
103         System.out.println(sat.format(str));
104         System.out.println("===============自定义对齐方式======================");
105         System.out.println(sat1.format(str));
106
107     }
108
109 }
110
111 执行结果:
112 Invilid just!
113 ===============默认对齐方式======================
114 The class Math contains methods for performing basic numeric operations such as
115 the elementary exponential, logarithm, square root, and trigonometric functions.
116  The quality of implementation specifications concern two properties, accuracy o
117                  f the returned result and monotonicity of the
118 ===============自定义对齐方式======================
119 The class Math contains methods for performing basic numeric operations such as the elementary exponential, logarithm, square root, and trigonometric
120        functions. The quality of implementation specifications concern two properties, accuracy of the returned result and monotonicity of the       

原文地址:https://www.cnblogs.com/celine/p/8463893.html

时间: 2024-11-29 09:40:42

字符串对齐器的相关文章

轻松python文本专题-字符串对齐

场景: 字符串对齐 python提供非常容易的方法,使得字符串对齐 >>> print("abc".center (30,'-')) -------------abc-------------- >>> print("abc".ljust (30)+'|') abc | >>> print("abc".rjust (30)) abc >>> 分别是center,ljust,r

《Python CookBook2》 第一章 文本 - 测试一个对象是否是类字符串 &amp;&amp; 字符串对齐

测试一个对象是否是类字符串 任务 有时候需要测试一个对象,尤其是当你在写一个函数或者方法的时候,经常需要测试传入的参数是否是一个字符串. 解决方案 利用内建的isinstance 和basestring 来简单快速地查询某个对象是否是字符串或者是Unicode 对象方法,如下: 代码: >>> def isAString(aaa): return isinstance(aaa,basestring) 运行结果: >>> isAString('aaa') True 字符串

ios,字符串对齐,等宽字体

在对同时有数字英文汉字的字符串对其时,总有细微偏差,原因是没用等宽字体,等宽字体有如下: http://zh.wikipedia.org/wiki/%E7%AD%89%E5%AE%BD%E5%AD%97%E4%BD%93 同时温习了一下数字的格式化: http://www.cnblogs.com/dabaopku/p/3419585.html iPhone里面的字体 : http://www.cocoachina.com/bbs/read.php?tid-364-fpage-4-toread-1

C#语言之“中英文混合字符串对齐”的方法

参考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html (2)http://www.cnblogs.com/sql4me/archive/2009/11/16/1603996.html 方法一:将已有字符串组织成新字符串时填充 由于某一个字段,包含有汉字和数字.而一个汉字是两位占位符的大小,如果单从字符串长度来看,一个汉字的长度为1.假如按一个包含汉字字符串长度就等于占位符大小(如果只包含字母和数字的字符串这样计算是对的)来计算的话

从语言字符串对齐

可采用*抑制赋值,为后面输出进行格式设定. #include<string.h> strlen函数其读出长度为整形int. #include<stdio.h> #include<string.h> int main(void) { char x[40]; char m[40]; int a,b; printf("srx:\n");    //采用*作为占位符 可以用后面位数来表示其占位数量 strlen函数其读出长度为整形int scanf(&quo

Python实用技法第32篇:对齐文本字符串

问题 我们需要以某种对齐方式将文本做格式化处理. 解决方案 对于基本的字符串对齐要求,可以使用字符串的ljust().rjust()和center()方法.示例如下: >>> text = 'Hello World' >>> text.ljust(20) 'Hello World ' >>> text.rjust(20) ' Hello World' >>> text.center(20) ' Hello World ' >&g

java基本类型和包装器类

java是一种面向对象语言,java中的类把方法与数据连接在一起,并构成了自包含式的处理单元.但在java中不能定义基本类型(primitive type),为了能将基本类型视为对象来处理,并能连接相关的方法,java为每个基本类型都提供了包装类,这样,我们便可以把这些基本类型转化为对象来处理了.这些包装类有:Boolean,Byte,Short,Character,Integer,Long,Float,Double,Void共9个(注意:Date不是,无其基本类型). 一. 包装类(Wrapp

装饰器、迭代器、生成器

1 def outer(func): 2 #func =原来f1函数 3 def inner(): 4 print('hio') 5 print('hio') 6 print('hio') 7 print('hio') 8 r=func() 9 print('1234214o') 10 print('1234214o') 11 print('1234214o') 12 print('1234214o') 13 14 return r 15 return inner 16 17 @outer 18

Struts2校验器

一.Struts2内建校验器 位于xwork-2.0.4.jar压缩包中( com.opensymphony.xwork2.validator.validators)有个文件default.xml ,该文件中定义了Struts2框架内建的校验器.default.xml文件定义了常用的校验器类型. <validators> <validator name="required" class="com.opensymphony.xwork2.validator.v