StringUitls
字符串判断:
例1: 判断是否为空(blank):
StringUtils.isBlank(null): true
StringUtils.isBlank(""): true
StringUtils.isBlank(" "): true
例2: 判断是否不为空(blank):
StringUtils.isNotBlank(null): false
StringUtils.isNotBlank(""): false
StringUtils.isNotBlank(" "): false
例3: 判断是否为空(empty):
StringUtils.isEmpty(null): true
StringUtils.isEmpty(""): true
StringUtils.isEmpty(" "): false
例4: 判断是否不为空(empty):
StringUtils.isNotEmpty(null): false
StringUtils.isNotEmpty(""): false
StringUtils.isNotEmpty(" "): true
例5: 判断是否是字母:
StringUtils.isAlpha("ab"): true
StringUtils.isAlpha("CD"): true
StringUtils.isAlpha("efGH"): true
StringUtils.isAlpha("12"): false
StringUtils.isAlpha("12ab"): false
例6: 判断是否是数字:
StringUtils.isNumeric("ab"): false
StringUtils.isNumeric("CD"): false
StringUtils.isNumeric("efGH"): false
StringUtils.isNumeric("12"): true
StringUtils.isNumeric("12ab"): false
例7: 判断是否是字母或数字:
StringUtils.isAlphanumeric("ab"): true
StringUtils.isAlphanumeric("CD"): true
StringUtils.isAlphanumeric("efGH"): true
StringUtils.isAlphanumeric("12"): true
StringUtils.isAlphanumeric("12ab"): true
字符串trim及默认处理:
例1: 去除字符串中的空白(包括全角空格、TAB).
StringUtils.deleteWhitespace("aa bb cc"): aabbcc
StringUtils.deleteWhitespace(" aa bb cc "): aabbcc
例2: 去除字符串头尾空白(包括全角空格、TAB).
StringUtils.trim(" abc "): abc
StringUtils.trim(" abc"): abc
StringUtils.trim(" abc"): abc
例3: 去除字符串头尾空白(包括TAB,但不包括全角空格), 结果为空串时返回空串.
StringUtils.trimToEmpty(" "):
StringUtils.trimToEmpty(" "):
StringUtils.trimToEmpty(" "):
例4: 去除字符串头尾空白(包括TAB,但不包括全角空格), 结果为空串时返回null.
StringUtils.trimToNull(" "): null
StringUtils.trimToNull(" "):
StringUtils.trimToNull(" "): null
例5: 返回可以处理null的toString().
StringUtils.defaultString("aaaa"): aaaa
字符串包含检查:
例1: 检查字符串(参数1)是否包含字符串(参数2).
StringUtils.contains("defg", "ef"): true
StringUtils.contains("defg", "EF"): false
StringUtils.contains("defg", "fe"): false
StringUtils.contains("ef", "defg"): false
StringUtils.contains("aad", "aadd"): false
StringUtils.contains("defg", "aadd"): false
例2: 检查字符串(参数1)是否包含字符串(参数2), 忽略大小写.
StringUtils.containsIgnoreCase("defg", "EF"): true
例3: 检查字符串(参数1)中的字符是否全为字符串(参数2)中的字符的子集.
StringUtils.containsOnly("defg", "ef"): false
StringUtils.containsOnly("ef", "defg"): true
StringUtils.containsOnly("fe", "defg"): true
StringUtils.containsOnly("aad", "aadd"): true
StringUtils.containsOnly("defg", "aadd"): false
例4: 检查字符串(参数1)和字符串(参数2)中的字符是否不存在交集.
StringUtils.containsNone("defg", "ef"): false
StringUtils.containsNone("defg", "fe"): false
StringUtils.containsNone("ef", "defg"): false
StringUtils.containsNone("aad", "aadd"): false
StringUtils.containsNone("defg", "aadd"): false
StringUtils.containsNone("defg", "xvy"): true
例5: 检查字符串(参数1)和字符串(参数2)中的字符是否存在交集.
StringUtils.containsAny("defg", "ef"): true
StringUtils.containsAny("defg", "fe"): true
StringUtils.containsAny("ef", "defg"): true
StringUtils.containsAny("aad", "aadd"): true
StringUtils.containsAny("defg", "aadd"): true
StringUtils.containsAny("defg", "xvy"): false
字符串处理:
例1: 将字符串重复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);
//运行结果:
**************************************************
^O^^O^^O^^O^^O^ StringUtilsDemo ^O^^O^^O^^O^^O^^
**************************************************
例2: 缩短到某长度,用...结尾.
StringUtils.abbreviate("The quick brown fox jumps over the lazy dog.", 10): The qui...
StringUtils.abbreviate("The quick brown fox jumps over the lazy dog.", 15, 10): ... fox...
字符串索引及截取:
例1: 返回两字符串不同处索引号.
StringUtils.indexOfDifference("aaabc", "aaacc"): 3
例2: 返回字符串(参数2)不同于字符串(参数1)的那部分字符串.
StringUtils.difference("aaabcde", "aaaccde"): ccde
例3: 返回字符串(参数1)去掉字符串(参数2)后的那部分字符串, 如果字符串(参数1)不是以字符串(参数2)结尾则返回原串.
StringUtils.chomp("aaabcde", "de"): aaabc
StringUtils.chomp("aaabcde", "ade"): aaabcde
StringUtils.chomp("aaabcdexyz", "de"): aaabcdexyz
ArrayUtils
数组aStr: { "abc", "uvw", "xyz", "123", "456" }
ArrayUtils.toString(aStr):{abc,uvw,xyz,123,456}
例2: 数组是否包含某元素:
数组aStr: { "abc", "uvw", "xyz", "123", "456" }
ArrayUtils.contains(aStr, "456"): true
ArrayUtils.contains(aStr, "XYZ"): false
NumberUtils
例1: 判断1个字符串中的字符是否全为数字:
NumberUtils.isDigits("11"): true
NumberUtils.isDigits("011"): true
NumberUtils.isDigits("0.11"): false
例2: 判断1个字符串是否为数字:
NumberUtils.isNumber("11"): true
NumberUtils.isNumber("011"): true
CollectionUtils
集合判断:
例1: 判断集合是否为空:
CollectionUtils.isEmpty(null): true
CollectionUtils.isEmpty(new ArrayList()): true
CollectionUtils.isEmpty({a,b}): false
例2: 判断集合是否不为空:
CollectionUtils.isNotEmpty(null): false
CollectionUtils.isNotEmpty(new ArrayList()): false
CollectionUtils.isNotEmpty({a,b}): true
2个集合间的操作:
集合a: {1,2,3,3,4,5}
集合b: {3,4,4,5,6,7}
CollectionUtils.union(a, b)(并集): {1,2,3,3,4,4,5,6,7}
CollectionUtils.intersection(a, b)(交集): {3,4,5}
CollectionUtils.disjunction(a, b)(交集的补集): {1,2,3,4,6,7}
CollectionUtils.disjunction(b, a)(交集的补集): {1,2,3,4,6,7}
CollectionUtils.subtract(a, b)(A与B的差): {1,2,3}
CollectionUtils.subtract(b, a)(B与A的差): {4,6,7}
BeanUtils
1.什么是BeanUtils:
BeanUtils主要提供了对于JavaBean进行各种操作。
2.BeanUtils的作用:
在一般的写bean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道bean的相关属性和方法,写bean是比较简单的,但是组件太多的时候,重复编写经常是枯燥乏味令人厌烦的。但当有些时候我么需要调用动态对象的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来解决这个问题。它需要Jakarta-Commons -Collections包和Jakarta-Commons -logging包的支持。
3. org.apache.commons.beanutils:
这个包主要提供用于操作JavaBean的工具类,Jakarta-Common-BeanUtils的主要功能都在这个包里实现。
BeanUtils可以直接get和set一个属性的值。它将property分成3种类型:
1Simple——简单类型,如Stirng、Int……
(对于Simple类型,第二个参数直接是属性名即可,详见代码)
2Indexed——索引类型,如 数组、arrayList……
(对于Indexed,则为“属性名[索引值]”,注意这里对于ArrayList和数组都可以用一样的方式进行操作,详见代码)
3Maped——这个不用说也该知道,就是指Map,比如HashMap……
(对于Map类型,则需要以“属性名(key值)”的形式,详见代码)
访问不同类型的数据可以直接调用函数getProperty和setProperty。它们都只有2个参数,第一个是JavaBean对象,第二个是要操作的属性名。
4.Converter 把Request或ResultSet中的字符串绑定到对象的属性
经常要从request,resultSet等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,下面的代码谁都写腻了。
String a = request.getParameter("a"); bean.setA(a);
String b = request.getParameter("b"); bean.setB(b);
…
不妨写一个Binder自动绑定所有属性:

MyBean bean =

HashMap map = new HashMap();
Enumeration names = request.getParameterNames();
while (names.hasMoreElements())
{
String name = (String) names.nextElement();
map.put(name, request.getParameterValues(name));
}
BeanUtils.populate(bean, map);
其中BeanUtils的populate方法(Struts用于将一个map的值填充到一个bean中)或者getProperty,setProperty方法其实都会调用convert进行转换。
但Converter只支持一些基本的类型,甚至连java.util.Date类型也不支持。而且它比较笨的一个地方是当遇到不认识的类型时,居然会抛出异常来。 对于Date类型,我参考它的sqldate类型实现了一个Converter,而且添加了一个设置日期格式的函数。
要把这个Converter注册,需要如下语句:
//因为要注册converter,所以不能再使用BeanUtils的静态方法了,必须创建BeanUtilsBean实例:
new BeanUtilsBean( convertUtils, new PropertyUtilsBean() ) ;
beanUtils.setProperty( bean, name, value ) ;
5.BeanUtils在Struts中的应用:
下面的代码是我们经常在Struts中为了获得浏览器带来的参数的方法:
User user = new User() ;
user.setId( daf.getString( "id" ) ) ;
user.setPassword( daf.getString( "password" ) ) ;
user.setUsername( daf.getString( "password" ) ) ;
…
是不是觉得每次写这些都是在重复造轮子呢?
在看看用BeanUtils写的:
J
就是这么简单
6.实例
private String name;
private HashMap address = new HashMap();
private String[] otherInfo;
private ArrayList product;
private ArrayList employee;
private HashMap telephone;
省略get/set
}
MainClass:
Jakarta-Commons- BeanUtils1.8.jar+JDK1.5
import java.util.HashMap ;
import org.apache.commons.beanutils.BeanUtils ;
/**
* @Author:Tony.Zhang setpsw@gmail.com Apr 22, 2009 1:34:16 PM
*/
public class MainClass {
/**
* @param args
* @throws Exception
*/
public static void main( String[] args ) throws Exception{
Test test = new Test();
test.setName( "zhangyi" );
// BeanUtils.getProperty( bean, name )
// 动态取得
System.out.println(BeanUtils.getProperty( test, "name" ));
HashMap map = new HashMap();
map.put( "1", "13880808080" );
map.put( "2", "13550505050" );
// BeanUtils.setProperty( bean, name, value )
BeanUtils.setProperty( test, "telephone", map );
// 动态取得
System.out.println(BeanUtils.getProperty( test, "telephone(1)" ));
/**
* 直接进行Bean之间的clone 复制后的2个Bean的同一个属性可能拥有同一个对象的ref,
* 这个在使用时要小心,特别是对于属性为类的情况。
*/
Test test2 = new Test();
BeanUtils.copyProperties( test2, test );
System.out.println(BeanUtils.getProperty( test2, "name" ));
}
}
注:以上实例使用
其余的功能大家继续挖掘吧,可以参考官方API的说明J
DateConverter dateConverter = new DateConverter();
convertUtils.register(dateConverter,Date.class);