Apache Commons Lang包的常用方法總結
阿新 • • 發佈:2019-02-06
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.CharSet; import org.apache.commons.lang3.CharSetUtils; import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.StopWatch; /*轉自霸氣的小碼農的部落格*/ public class TestLangDemo { public void charSetDemo() { System.out.println ("**CharSetDemo**"); CharSet charSet = CharSet.getInstance ("aeiou"); String demoStr = "The quick brown fox jumps over the lazy dog."; int count = 0; for (int i = 0, len = demoStr.length(); i < len; i++) { if (charSet.contains (demoStr.charAt (i) ) ) { count++; } } System.out.println ("count: " + count); } public void charSetUtilsDemo() { System.out.println ("**CharSetUtilsDemo**"); System.out.println ("計算字串中包含某字元數."); System.out.println (CharSetUtils.count ( "The quick brown fox jumps over the lazy dog.", "aeiou") ); System.out.println ("刪除字串中某字元."); System.out.println (CharSetUtils.delete ( "The quick brown fox jumps over the lazy dog.", "aeiou") ); System.out.println ("保留字串中某字元."); System.out.println (CharSetUtils.keep ( "The quick brown fox jumps over the lazy dog.", "aeiou") ); System.out.println ("合併重複的字元."); System.out.println (CharSetUtils.squeeze ("a bbbbbb c dd", "b d") ); } public void objectUtilsDemo() { System.out.println ("**ObjectUtilsDemo**"); System.out.println ("Object為null時,預設列印某字元."); Object obj = null; System.out.println (ObjectUtils.defaultIfNull (obj, "空") ); System.out.println ("驗證兩個引用是否指向的Object是否相等,取決於Object的equals()方法."); Object a = new Object(); Object b = a; Object c = new Object(); System.out.println (ObjectUtils.equals (a, b) ); System.out.println (ObjectUtils.equals (a, c) ); System.out.println ("用父類Object的toString()方法返回物件資訊."); Date date = new Date(); System.out.println (ObjectUtils.identityToString (date) ); System.out.println (date); System.out.println ("返回類本身的toString()方法結果,物件為null時,返回0長度字串."); System.out.println (ObjectUtils.toString (date) ); System.out.println (ObjectUtils.toString (null) ); System.out.println (date); } public void serializationUtilsDemo() { System.out.println ("*SerializationUtils**"); Date date = new Date(); byte[] bytes = SerializationUtils.serialize (date); System.out.println (ArrayUtils.toString (bytes) ); System.out.println (date); Date reDate = (Date) SerializationUtils.deserialize (bytes); System.out.println (reDate); System.out.println (ObjectUtils.equals (date, reDate) ); System.out.println (date == reDate); FileOutputStream fos = null; FileInputStream fis = null; try { fos = new FileOutputStream (new File ("d:/test.txt") ); fis = new FileInputStream (new File ("d:/test.txt") ); SerializationUtils.serialize (date, fos); Date reDate2 = (Date) SerializationUtils.deserialize (fis); System.out.println (date.equals (reDate2) ); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { fos.close(); fis.close(); } catch (IOException e) { e.printStackTrace(); } } } public void randomStringUtilsDemo() { System.out.println ("**RandomStringUtilsDemo**"); System.out.println ("生成指定長度的隨機字串,好像沒什麼用."); System.out.println (RandomStringUtils.random (500) ); System.out.println ("在指定字串中生成長度為n的隨機字串."); System.out.println (RandomStringUtils.random (5, "abcdefghijk") ); System.out.println ("指定從字元或數字中生成隨機字串."); System.out.println (RandomStringUtils.random (5, true, false) ); System.out.println (RandomStringUtils.random (5, false, true) ); } public void stringUtilsDemo() { System.out.println ("**StringUtilsDemo**"); System.out.println ("將字串重複n次,將文字按某寬度居中,將字串陣列用某字串連線."); String[] header = new String[3]; header[0] = StringUtils.repeat ("*", 50); header[1] = StringUtils.center (" StringUtilsDemo ", 50, "^O^"); header[2] = header[0]; String head = StringUtils.join (header, "\n"); System.out.println (head); System.out.println ("縮短到某長度,用...結尾."); System.out.println (StringUtils.abbreviate ( "The quick brown fox jumps over the lazy dog.", 10) ); System.out.println (StringUtils.abbreviate ( "The quick brown fox jumps over the lazy dog.", 15, 10) ); System.out.println ("返回兩字串不同處索引號."); System.out.println (StringUtils.indexOfDifference ("aaabc", "aaacc") ); System.out.println ("返回兩字串不同處開始至結束."); System.out.println (StringUtils.difference ("aaabcde", "aaaccde") ); System.out.println ("截去字串為以指定字串結尾的部分."); System.out.println (StringUtils.chomp ("aaabcde", "de") ); System.out.println ("檢查一字串是否為另一字串的子集."); System.out.println (StringUtils.containsOnly ("aad", "aadd") ); System.out.println ("檢查一字串是否不是另一字串的子集."); System.out.println (StringUtils.containsNone ("defg", "aadd") ); System.out.println ("檢查一字串是否包含另一字串."); System.out.println (StringUtils.contains ("defg", "ef") ); System.out.println (StringUtils.containsOnly ("ef", "defg") ); System.out.println ("返回可以處理null的toString()."); System.out.println (StringUtils.defaultString ("aaaa") ); System.out.println ("?" + StringUtils.defaultString (null) + "!"); System.out.println ("去除字元中的空格."); System.out.println (StringUtils.deleteWhitespace ("aa bb cc") ); System.out.println ("分隔符處理成陣列."); String[] strArray = StringUtils.split ("a,b,,c,d,null,e", ","); System.out.println (strArray.length); System.out.println (strArray.toString() ); System.out.println ("判斷是否是某類字元."); System.out.println (StringUtils.isAlpha ("ab") ); System.out.println (StringUtils.isAlphanumeric ("12") ); System.out.println (StringUtils.isBlank ("") ); System.out.println (StringUtils.isNumeric ("123") ); } public void systemUtilsDemo() { System.out.println (genHeader ("SystemUtilsDemo") ); System.out.println ("獲得系統檔案分隔符."); System.out.println (SystemUtils.FILE_SEPARATOR); System.out.println ("獲得原始檔編碼."); System.out.println (SystemUtils.FILE_ENCODING); System.out.println ("獲得ext目錄."); System.out.println (SystemUtils.JAVA_EXT_DIRS); System.out.println ("獲得java版本."); System.out.println (SystemUtils.JAVA_VM_VERSION); System.out.println ("獲得java廠商."); System.out.println (SystemUtils.JAVA_VENDOR); } public void classUtilsDemo() { System.out.println (genHeader ("ClassUtilsDemo") ); System.out.println ("獲取類實現的所有介面."); System.out.println (ClassUtils.getAllInterfaces (Date.class) ); System.out.println ("獲取類所有父類."); System.out.println (ClassUtils.getAllSuperclasses (Date.class) ); System.out.println ("獲取簡單類名."); System.out.println (ClassUtils.getShortClassName (Date.class) ); System.out.println ("獲取包名."); System.out.println (ClassUtils.getPackageName (Date.class) ); System.out.println ("判斷是否可以轉型."); System.out.println (ClassUtils.isAssignable (Date.class, Object.class) ); System.out.println (ClassUtils.isAssignable (Object.class, Date.class) ); } public void stringEscapeUtilsDemo() { System.out.println (genHeader ("StringEcsapeUtils") ); System.out.println ("轉換特殊字元."); System.out.println ("html:" + StringEscapeUtils.escapeHtml3 (" ") ); System.out.println ("html:" + StringEscapeUtils.escapeHtml4 (" ") ); System.out.println ("html:" + StringEscapeUtils.unescapeHtml3 ("<p>") ); System.out.println ("html:" + StringEscapeUtils.unescapeHtml4 ("<p>") ); } private final class BuildDemo { String name; int age; public BuildDemo (String name, int age) { this.name = name; this.age = age; } public String toString() { ToStringBuilder tsb = new ToStringBuilder (this, ToStringStyle.MULTI_LINE_STYLE); tsb.append ("Name", name); tsb.append ("Age", age); return tsb.toString(); } public int hashCode() { HashCodeBuilder hcb = new HashCodeBuilder(); hcb.append (name); hcb.append (age); return hcb.hashCode(); } public boolean equals (Object obj) { if (! (obj instanceof BuildDemo) ) { return false; } BuildDemo bd = (BuildDemo) obj; EqualsBuilder eb = new EqualsBuilder(); eb.append (name, bd.name); eb.append (age, bd.age); return eb.isEquals(); } } public void builderDemo() { System.out.println (genHeader ("BuilderDemo") ); BuildDemo obj1 = new BuildDemo ("a", 1); BuildDemo obj2 = new BuildDemo ("b", 2); BuildDemo obj3 = new BuildDemo ("a", 1); System.out.println ("toString()"); System.out.println (obj1); System.out.println (obj2); System.out.println (obj3); System.out.println ("hashCode()"); System.out.println (obj1.hashCode() ); System.out.println (obj2.hashCode() ); System.out.println (obj3.hashCode() ); System.out.println ("equals()"); System.out.println (obj1.equals (obj2) ); System.out.println (obj1.equals (obj3) ); } public void numberUtils() { System.out.println (genHeader ("NumberUtils") ); System.out.println ("字串轉為數字(不知道有什麼用)."); System.out.println (NumberUtils.toInt ("ba", 33) ); System.out.println ("從陣列中選出最大值."); System.out.println (NumberUtils.max (new int[] { 1, 2, 3, 4 }) ); System.out.println ("判斷字串是否全是整數."); System.out.println (NumberUtils.isDigits ("123.1") ); System.out.println ("判斷字串是否是有效數字."); System.out.println (NumberUtils.isNumber ("0123.1") ); } public void dateFormatUtilsDemo() { System.out.println (genHeader ("DateFormatUtilsDemo") ); System.out.println ("格式化日期輸出."); System.out.println (DateFormatUtils.format (System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss") ); System.out.println ("秒錶."); StopWatch sw = new StopWatch(); sw.start(); for (Iterator iterator = DateUtils.iterator (new Date(), DateUtils.RANGE_WEEK_CENTER); iterator.hasNext();) { Calendar cal = (Calendar) iterator.next(); System.out.println (DateFormatUtils.format (cal.getTime(), "yy-MM-dd HH:mm") ); } sw.stop(); System.out.println ("秒錶計時:" + sw.getTime() ); } private String genHeader (String head) { String[] header = new String[3]; header[0] = StringUtils.repeat ("*", 50); header[1] = StringUtils.center (" " + head + " ", 50, "^O^"); header[2] = header[0]; return StringUtils.join (header, "\n"); } private void validateDemo() { String[] strarray = {"a", "b", "c"}; System.out.println ("驗證功能"); System.out.println (Validate.notEmpty (strarray) ); } private void wordUtilsDemo() { System.out.println ("單詞處理功能"); String str1 = "wOrD"; String str2 = "ghj\nui\tpo"; System.out.println (WordUtils.capitalize (str1) ); //首字母大寫 System.out.println (WordUtils.capitalizeFully (str1) ); //首字母大寫其它字母小寫 char[] ctrg = {'.'}; System.out.println (WordUtils.capitalizeFully ("i aM.fine", ctrg) ); //在規則地方轉換 System.out.println (WordUtils.initials (str1) ); //獲取首字母 System.out.println (WordUtils.initials ("Ben John Lee", null) ); //取每個單詞的首字母 char[] ctr = {' ', '.'}; System.out.println (WordUtils.initials ("Ben J.Lee", ctr) ); //按指定規則獲取首字母 System.out.println (WordUtils.swapCase (str1) ); //大小寫逆轉 System.out.println (WordUtils.wrap (str2, 1) ); //解析\n和\t等字元 } /** * @param args */ public static void main (String[] args) { TestLangDemo langDemo = new TestLangDemo(); langDemo.charSetDemo(); langDemo.charSetUtilsDemo(); langDemo.objectUtilsDemo(); langDemo.serializationUtilsDemo(); langDemo.randomStringUtilsDemo(); langDemo.stringUtilsDemo(); langDemo.systemUtilsDemo(); langDemo.classUtilsDemo(); langDemo.stringEscapeUtilsDemo(); langDemo.builderDemo(); langDemo.numberUtils(); langDemo.dateFormatUtilsDemo(); langDemo.validateDemo(); langDemo.wordUtilsDemo(); } }