部分转载至:http://linhongyu.blog.51cto.com/6373370/1553329

一、前言

Java码农不识Apache,敲尽一生也枉然。旗下的开源项目众多,各个都是吊炸天。今日且说Commons,轻轻点击此链接进入Apache Commons主页,Logging、Pool、Net、ONGL、EL、IO、DBCP、Email、Collection、Lang……等等项目中常用到的包。而这篇文章的主角Lang则是我们最常用的工具作为jdk的补充,怎能不去详细探究一番!

二、字符串的处理类(StringUtils)

org.apache.commons.lang3.StringUtils 继承Object,Operations on String that are null safe。所谓的null safe就是对String进行操作不会出现NullPointerException异常,很实用有没有!以后再也不怕到处出现空指针异常了。先看看官方文档中这个类都有些什么方法:

这些方法基本上看方法名,就能猜出它大概的作用了。

  1. //缩短到某长度,用...结尾.其实就是(substring(str, 0, max-3) + "...")
  2. //public static String abbreviate(String str,int maxWidth)
  3. StringUtils.abbreviate("abcdefg", 6);// ---"abc..."
  4.  
  5. //字符串结尾的后缀是否与你要结尾的后缀匹配,若不匹配则添加后缀
  6. StringUtils.appendIfMissing("abc","xyz");//---"abcxyz"
  7. StringUtils.appendIfMissingIgnoreCase("abcXYZ","xyz");//---"abcXYZ"
  8.  
  9. //首字母大小写转换
  10. StringUtils.capitalize("cat");//---"Cat"
  11. StringUtils.uncapitalize("Cat");//---"cat"
  12.  
  13. //字符串扩充至指定大小且居中(若扩充大小少于原字符大小则返回原字符,若扩充大小为 负数则为0计算 )
  14. StringUtils.center("abcd", 2);//--- "abcd"
  15. StringUtils.center("ab", -1);//--- "ab"
  16. StringUtils.center("ab", 4);//---" ab "
  17. StringUtils.center("a", 4, "yz");//---"yayz"
  18. StringUtils.center("abc", 7, "");//---" abc "
  19.  
  20. //去除字符串中的"\n", "\r", or "\r\n"
  21. StringUtils.chomp("abc\r\n");//---"abc"
  22.  
  23. //判断一字符串是否包含另一字符串
  24. StringUtils.contains("abc", "z");//---false
  25. StringUtils.containsIgnoreCase("abc", "A");//---true
  26.  
  27. //统计一字符串在另一字符串中出现次数
  28. StringUtils.countMatches("abba", "a");//---2
  29.  
  30. //删除字符串中的梭有空格
  31. StringUtils.deleteWhitespace(" ab c ");//---"abc"
  32.  
  33. //比较两字符串,返回不同之处。确切的说是返回第二个参数中与第一个参数所不同的字符串
  34. StringUtils.difference("abcde", "abxyz");//---"xyz"
  35.  
  36. //检查字符串结尾后缀是否匹配
  37. StringUtils.endsWith("abcdef", "def");//---true
  38. StringUtils.endsWithIgnoreCase("ABCDEF", "def");//---true
  39. StringUtils.endsWithAny("abcxyz", new String[] {null, "xyz", "abc"});//---true
  40.  
  41. //检查起始字符串是否匹配
  42. StringUtils.startsWith("abcdef", "abc");//---true
  43. StringUtils.startsWithIgnoreCase("ABCDEF", "abc");//---true
  44. StringUtils.startsWithAny("abcxyz", new String[] {null, "xyz", "abc"});//---true
  45.  
  46. //判断两字符串是否相同
  47. StringUtils.equals("abc", "abc");//---true
  48. StringUtils.equalsIgnoreCase("abc", "ABC");//---true
  49.  
  50. //比较字符串数组内的所有元素的字符序列,起始一致则返回一致的字符串,若无则返回""
  51. StringUtils.getCommonPrefix(new String[] {"abcde", "abxyz"});//---"ab"
  52.  
  53. //正向查找字符在字符串中第一次出现的位置
  54. StringUtils.indexOf("aabaabaa", "b");//---2
  55. StringUtils.indexOf("aabaabaa", "b", 3);//---5(从角标3后查找)
  56. StringUtils.ordinalIndexOf("aabaabaa", "a", 3);//---1(查找第n次出现的位置)
  57.  
  58. //反向查找字符串第一次出现的位置
  59. StringUtils.lastIndexOf("aabaabaa", 'b');//---5
  60. StringUtils.lastIndexOf("aabaabaa", 'b', 4);//---2
  61. StringUtils.lastOrdinalIndexOf("aabaabaa", "ab", 2);//---1
  62.  
  63. //判断字符串大写、小写
  64. StringUtils.isAllUpperCase("ABC");//---true
  65. StringUtils.isAllLowerCase("abC");//---false
  66.  
  67. //判断是否为空(注:isBlank与isEmpty 区别)
  68. StringUtils.isBlank(null);StringUtils.isBlank("");StringUtils.isBlank(" ");//---true
  69. StringUtils.isNoneBlank(" ", "bar");//---false
  70.  
  71. StringUtils.isEmpty(null);StringUtils.isEmpty("");//---true
  72. StringUtils.isEmpty(" ");//---false
  73. StringUtils.isNoneEmpty(" ", "bar");//---true
  74.  
  75. //判断字符串数字
  76. StringUtils.isNumeric("123");//---false
  77. StringUtils.isNumeric("12 3");//---false (不识别运算符号、小数点、空格……)
  78. StringUtils.isNumericSpace("12 3");//---true
  79.  
  80. //数组中加入分隔符号
  81. //StringUtils.join([1, 2, 3], ';');//---"1;2;3"
  82.  
  83. //大小写转换
  84. StringUtils.upperCase("aBc");//---"ABC"
  85. StringUtils.lowerCase("aBc");//---"abc"
  86. StringUtils.swapCase("The dog has a BONE");//---"tHE DOG HAS A bone"
  87.  
  88. //替换字符串内容……(replacePattern、replceOnce)
  89. StringUtils.replace("aba", "a", "z");//---"zbz"
  90. StringUtils.overlay("abcdef", "zz", 2, 4);//---"abzzef"(指定区域)
  91. StringUtils.replaceEach("abcde", new String[]{"ab", "d"},
  92. new String[]{"w", "t"});//---"wcte"(多组指定替换ab->w,d->t)
  93.  
  94. //重复字符
  95. StringUtils.repeat('e', 3);//---"eee"
  96.  
  97. //反转字符串
  98. StringUtils.reverse("bat");//---"tab"
  99.  
  100. //删除某字符
  101. StringUtils.remove("queued", 'u');//---"qeed"
  102.  
  103. //分割字符串
  104. StringUtils.split("a..b.c", '.');//---["a", "b", "c"]
  105. StringUtils.split("ab:cd:ef", ":", 2);//---["ab", "cd:ef"]
  106. StringUtils.splitByWholeSeparator("ab-!-cd-!-ef", "-!-", 2);//---["ab", "cd-!-ef"]
  107. StringUtils.splitByWholeSeparatorPreserveAllTokens("ab::cd:ef", ":");//-["ab"," ","cd","ef"]
  108.  
  109. //去除首尾空格,类似trim……(stripStart、stripEnd、stripAll、stripAccents)
  110. StringUtils.strip(" ab c ");//---"ab c"
  111. StringUtils.stripToNull(null);//---null
  112. StringUtils.stripToEmpty(null);//---""
  113.  
  114. //截取字符串
  115. StringUtils.substring("abcd", 2);//---"cd"
  116. StringUtils.substring("abcdef", 2, 4);//---"cd"
  117.  
  118. //left、right从左(右)开始截取n位字符
  119. StringUtils.left("abc", 2);//---"ab"
  120. StringUtils.right("abc", 2);//---"bc"
  121. //从第n位开始截取m位字符 n m
  122. StringUtils.mid("abcdefg", 2, 4);//---"cdef"
  123.  
  124. StringUtils.substringBefore("abcba", "b");//---"a"
  125. StringUtils.substringBeforeLast("abcba", "b");//---"abc"
  126. StringUtils.substringAfter("abcba", "b");//---"cba"
  127. StringUtils.substringAfterLast("abcba", "b");//---"a"
  128.  
  129. StringUtils.substringBetween("tagabctag", "tag");//---"abc"
  130. StringUtils.substringBetween("yabczyabcz", "y", "z");//---"abc"

三、其它类简介

RandomStringUtils:

  1. //随机生成n位数数字
  2. RandomStringUtils.randomNumeric(n);
  3. //在指定字符串中生成长度为n的随机字符串
  4. RandomStringUtils.random(n, "abcdefghijk");
  5. //指定从字符或数字中生成随机字符串
  6. System.out.println(RandomStringUtils.random(n, true, false));
  7. System.out.println(RandomStringUtils.random(n, false, true));

NumberUtils:

  1. //从数组中选出最大值
  2. NumberUtils.max(new int[] { 1, 2, 3, 4 });//---4
  3. //判断字符串是否全是整数
  4. NumberUtils.isDigits("153.4");//--false
  5. //判断字符串是否是有效数字
  6. NumberUtils.isNumber("0321.1");//---false

ArrayUtils:

  1. //创建数组
  2. String[] array = ArrayUtils.toArray("1", "2");
  3. //判断两个数据是否相等,如果内容相同, 顺序相同 则返回 true
  4. ArrayUtils.isEquals(arr1,arr2);
  5. //判断数组中是否包含某一对象
  6. ArrayUtils.contains(arr, "33");
  7. //二维数组转换成MAP
  8. Map map = ArrayUtils.toMap(new String[][] {
  9. { "RED", "#FF0000" }, { "GREEN", "#00FF00" }, { "BLUE", "#0000FF" } });

DateUtils:

  1. //日期加n天
  2. DateUtils.addDays(new Date(), n);
  3. //判断是否同一天
  4. DateUtils.isSameDay(date1, date2);
  5. //字符串时间转换为Date
  6. DateUtils.parseDate(str, parsePatterns);

四、结语

本文只是简单的介绍了commons-lang中的一些常用工具类,还有许多挺实用的就不一一列举。还是要自己去查阅文档试用了才能体会到它的简便。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

http://janwer.iteye.com/blog/148313

关于Apache Commons-Lang的总结的更多相关文章

  1. 让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】

    JAVA的时间日期处理一直是一个比较复杂的问题,大多数程序员都不能很轻松的来处理这些问题.首先Java中关于时间的类,从 JDK 1.1 开始,Date的作用很有限,相应的功能已由Calendar与D ...

  2. 关于出现 org.apache.commons.lang.exception.NestableRuntimeException的解决方法

    最近做服务端和客户端之间的访问,出现了 org.apache.commons.lang.exception.NestableRuntimeException等状况.实在令人头大,翻到了一个很好的帖子说 ...

  3. org.apache.commons.lang.StringUtils中常用的方法

    org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...

  4. java转换json需要导入的jar包,org/apache/commons/lang/exception/NestableRuntimeException

    缺少相应jar包都会有异常,根据异常找jar包导入......     这里我说下lang包,因为这个包我找了好半天:   我用的是: commons-lang3-3.1.jar  出现异常: jav ...

  5. org.apache.commons.lang.StringUtils类

    org.apache.commons.lang.StringUtils类 本文摘自:(http://www.blogjava.net/japper/archive/2012/05/23/378946. ...

  6. java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntim [问题点数:40分,结帖人wangxiaohua_001]

    14:56:10.093 WARN!! Error for /butterfly/plugins/zhonghang/UsefulData/save_usefuldata.bshjava.lang.N ...

  7. java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils

    java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils Caused by: java.lang.ClassNotFou ...

  8. ssh整合启动tomcat报java.lang.ClassNotFoundException: org.apache.commons.lang.xwork.StringUtils

    今天搭建了一个ssh项目环境,整合后,访问项目首页,登录不进去,控制台报错,后来调试代码后,在获取数据库数据后,返回到action时,又进入了action导致死循环,其实这里是两个问题,控制台报错如下 ...

  9. 转 java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException

    转自:http://blog.csdn.net/zb0567/article/details/7893063 java.lang.ClassNotFoundException: org.apache. ...

  10. org.apache.commons.lang下的工具类

    1.org.apache.commons.lang.ArrayUtils 例子 package chongqingyusp; import java.util.Map; import org.apac ...

随机推荐

  1. STM32 串口DMA方式接收(转)

    STM32 是一款基于ARM Cortex-M3内核的32位MCU,主频最高可达72M.最近因为要在车机上集成TPMS功能, 便开始着手STM32的开发工作,STM32F10x系列共有5个串口(USA ...

  2. python中__dict__和dir()

    转自:http://www.cnblogs.com/ifantastic/p/3768415.html 首先需要知道的是,dir() 是 Python 提供的一个 API 函数,dir() 函数会自动 ...

  3. 字符串旋转(str.find()---KMP)

    此题旋转带有技巧性,问题转化为常见的问题,熟练STL可以直接用str.find()函数,其是主要想用KMP算法实现字符串的查找算法... //如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的 ...

  4. 编写安全代码:小心volatile的原子性误解

    本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. ============ ...

  5. 【Zookeeper学习】Apache Zookeeper项目简介

    正在撰写,稍后来访……

  6. ant -verbose -debug ...

    ant -verbose -debug  (target) 可以让ant打印出所执行的command任务

  7. python 输出字符串如果遇到字典

    >>> d = {'a':1} >>> print '%s' % 1,d 1 {'a': 1} >>> print '%s %s' % 1,d T ...

  8. stm32 cortext-M3 类型对齐问题【worldsing笔记】

    经过细测,Cortex-M3的double类型必须4字节对齐访问,其他诸如float,int,short 可以非对齐访问.否则将会产生硬件异常!即访问double类型地址必须能被4整除,测试代码如下: ...

  9. SHH入门:Spring框架简介

    (1)Spring 七大模块 核心容器:核心容器提供Spring 框架的基本功能.核心容器的主要组件是 BeanFactory,它是工厂模式的实现.BeanFactory 使用控制反转 (IOC) 模 ...

  10. Winform- DotNetBar for Windows Forms的安装的添加

    Winform界面不好看,偶尔在网上看到winform的界面美化,对比了一下选择了DotNetBar for Windows Forms 1.破解版网上很多,提供一个参考的下载地址http://dx. ...