(1)
StringUtils 方法的操作对象是java.lang.String类型的对象,是 JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出 NullPointerException,而是做了相应处理,例如,如果输入为null则返回也是null等,具体可以查看源代码)。
除了构造器, StringUtils 中一共有130多个方法,并且都是static 的,所以我们可以这样调用StringUtils .xxx()
下面分别对一些常用方法做简要介绍:
1. public static boolean isEmpty(String str)
判断某字符串是否为空,为空的标准是str==null或str.length()==0
下面是StringUtils 判断是否为空的示例:
StringUtils .isEmpty(null) = true
StringUtils .isEmpty("") = true
StringUtils .isEmpty(" ") = false //注意在StringUtils 中空格作非空处理
StringUtils .isEmpty(" ") = false
StringUtils .isEmpty("bob") = false
StringUtils .isEmpty(" bob ") = false
2. public static boolean isNotEmpty(String str)
判断某字符串是否非空,等于!isEmpty(String str)
下面是示例:
StringUtils .isNotEmpty(null) = false
StringUtils .isNotEmpty("") = false
StringUtils .isNotEmpty(" ") = true
StringUtils .isNotEmpty(" ") = true
StringUtils .isNotEmpty("bob") = true
StringUtils .isNotEmpty(" bob ") = true
3. public static boolean isBlank(String str)
判断某字符串是否为空或长度为0或由空白符(whitespace)构成
下面是示例:
StringUtils .isBlank(null) = true
StringUtils .isBlank("") = true
StringUtils .isBlank(" ") = true
StringUtils .isBlank(" ") = true
StringUtils .isBlank("/t /n /f /r") = true //对于制表符、换行符、换页符和回车符StringUtils .isBlank() 均识为空白符
StringUtils .isBlank("/b") = false //"/b"为单词边界符
StringUtils .isBlank("bob") = false
StringUtils .isBlank(" bob ") = false
4. public static boolean isNotBlank(String str)
判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成,等于!isBlank(String str)
下面是示例:
StringUtils .isNotBlank(null) = false
StringUtils .isNotBlank("") = false
StringUtils .isNotBlank(" ") = false
StringUtils .isNotBlank(" ") = false
StringUtils .isNotBlank("/t /n /f /r") = false
StringUtils .isNotBlank("/b") = true
StringUtils .isNotBlank("bob") = true
StringUtils .isNotBlank(" bob ") = true
5. public static String trim(String str)
去掉字符串两端的控制符(control characters, char <= 32),如果输入为null则返回null
下面是示例:
StringUtils .trim(null) = null
StringUtils .trim("") = ""
StringUtils .trim(" ") = ""
StringUtils .trim(" /b /t /n /f /r ") = ""
StringUtils .trim(" /n/tss /b") = "ss"
StringUtils .trim(" d d dd ") = "d d dd"
StringUtils .trim("dd ") = "dd"
StringUtils .trim(" dd ") = "dd"
6. public static String trimToNull(String str)
去掉字符串两端的控制符(control characters, char <= 32),如果变为null或"",则返回null
下面是示例:
StringUtils .trimToNull(null) = null
StringUtils .trimToNull("") = null
StringUtils .trimToNull(" ") = null
StringUtils .trimToNull(" /b /t /n /f /r ") = null
StringUtils .trimToNull(" /n/tss /b") = "ss"
StringUtils .trimToNull(" d d dd ") = "d d dd"
StringUtils .trimToNull("dd ") = "dd"
StringUtils .trimToNull(" dd ") = "dd"
7. public static String trimToEmpty(String str)
去掉字符串两端的控制符(control characters, char <= 32),如果变为null或"",则返回""
下面是示例:
StringUtils .trimToEmpty(null) = ""
StringUtils .trimToEmpty("") = ""
StringUtils .trimToEmpty(" ") = ""
StringUtils .trimToEmpty(" /b /t /n /f /r ") = ""
StringUtils .trimToEmpty(" /n/tss /b") = "ss"
StringUtils .trimToEmpty(" d d dd ") = "d d dd"
StringUtils .trimToEmpty("dd ") = "dd"
StringUtils .trimToEmpty(" dd ") = "dd"
8. public static String strip(String str)
去掉字符串两端的空白符(whitespace),如果输入为null则返回null
下面是示例(注意和trim()的区别):
StringUtils .strip(null) = null
StringUtils .strip("") = ""
StringUtils .strip(" ") = ""
StringUtils .strip(" /b /t /n /f /r ") = "/b"
StringUtils .strip(" /n/tss /b") = "ss /b"
StringUtils .strip(" d d dd ") = "d d dd"
StringUtils .strip("dd ") = "dd"
StringUtils .strip(" dd ") = "dd"
9. public static String stripToNull(String str)
去掉字符串两端的空白符(whitespace),如果变为null或"",则返回null
下面是示例(注意和trimToNull()的区别):
StringUtils .stripToNull(null) = null
StringUtils .stripToNull("") = null
StringUtils .stripToNull(" ") = null
StringUtils .stripToNull(" /b /t /n /f /r ") = "/b"
StringUtils .stripToNull(" /n/tss /b") = "ss /b"
StringUtils .stripToNull(" d d dd ") = "d d dd"
StringUtils .stripToNull("dd ") = "dd"
StringUtils .stripToNull(" dd ") = "dd"
10. public static String stripToEmpty(String str)
去掉字符串两端的空白符(whitespace),如果变为null或"",则返回""
下面是示例(注意和trimToEmpty()的区别):
StringUtils .stripToNull(null) = ""
StringUtils .stripToNull("") = ""
StringUtils .stripToNull(" ") = ""
StringUtils .stripToNull(" /b /t /n /f /r ") = "/b"
StringUtils .stripToNull(" /n/tss /b") = "ss /b"
StringUtils .stripToNull(" d d dd ") = "d d dd"
StringUtils .stripToNull("dd ") = "dd"
StringUtils .stripToNull(" dd ") = "dd"
以下方法只介绍其功能,不再举例:
11. public static String strip(String str, String stripChars)
去掉str两端的在stripChars中的字符。
如果str为null或等于"",则返回它本身;
如果stripChars为null或"",则返回strip(String str)。
12. public static String stripStart(String str, String stripChars)
和11相似,去掉str前端的在stripChars中的字符。
13. public static String stripEnd(String str, String stripChars)
和11相似,去掉str末端的在stripChars中的字符。
14. public static String[] stripAll(String[] strs)
对字符串数组中的每个字符串进行strip(String str),然后返回。
如果strs为null或strs长度为0,则返回strs本身
15. public static String[] stripAll(String[] strs, String stripChars)
对字符串数组中的每个字符串进行strip(String str, String stripChars),然后返回。
如果strs为null或strs长度为0,则返回strs本身
16. public static boolean equals(String str1, String str2)
比较两个字符串是否相等,如果两个均为空则也认为相等。
17. public static boolean equalsIgnoreCase(String str1, String str2)
比较两个字符串是否相等,不区分大小写,如果两个均为空则也认为相等。
18. public static int indexOf(String str, char searchChar)
返回字符searchChar在字符串str中第一次出现的位置。
如果searchChar没有在str中出现则返回-1,
如果str为null或"",则也返回-1
19. public static int indexOf(String str, char searchChar, int startPos)
返回字符searchChar从startPos开始在字符串str中第一次出现的位置。
()
前言:
在org.apache.commons包中提供了的一系列能简化一些编程过程中常见问题的共通函数和类,使程序员能把主要精力集中在
构架,业务实现和优化而不是具体实现及验证上,一言以蔽之,它能使我们避免重复的发明车轮。
org.apache.commons包的下载页面在:
http://jakarta.apache.org/site/downloads/downloads_commons-lang.cgi
其中源码大家可以借鉴一下,我觉得很有参考价值,尤其是有些函数在不用正则表达式下取得的效果。
取得commons-lang-2.1.jar后加入自己工程的lib目录就可以了.如果用户不允许使用commons,那末打开其源码把具体函数加入自己的代码也可以,当然需要尊重人家的知识产权。
以下代码经过测试,测试环境(WinXp+Eclipse3.1+JDK1.5+commons-lang-2.1),我在有些地方修改了一下。
Jakarta Commons Cookbook—01—Manipulating Text
Commons之字符串操作
要利用Jakarta Commons来进行字符串操作,首先需要加载需要用到的包:
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.WordUtils;
以下是StringUtils的各项用法
1.空字符串检查
使用函数: StringUtils.isBlank(testString)
函数介绍: 当testString为空,长度为零或者仅由空白字符(whitespace)组成时,返回True;否则返回False
例程:
String test = "";
String test2 = "/n/n/t";
String test3 = null;
String test4 = "Test";
System.out.println( "test blank? " + StringUtils.isBlank( test ) );
System.out.println( "test2 blank? " + StringUtils.isBlank( test2 ) );
System.out.println( "test3 blank? " + StringUtils.isBlank( test3 ) );
System.out.println( "test4 blank? " + StringUtils.isBlank( test4 ) );
输出如下:
test blank? true
test2 blank? true
test3 blank? true
test4 blank? False
函数StringUtils.isNotBlank(testString)的功能与StringUtils.isBlank(testString)相反.
2.清除空白字符
使用函数: StringUtils.trimToNull(testString)
函数介绍:清除掉testString首尾的空白字符,如果仅testString全由空白字符
(whitespace)组成则返回null
例程:
String test1 = "/t";
String test2 = " A Test ";
String test3 = null;
System.out.println( "test1 trimToNull: " + StringUtils.trimToNull( test1 ) );
System.out.println( "test2 trimToNull: " + StringUtils.trimToNull( test2 ) );
System.out.println( "test3 trimToNull: " + StringUtils.trimToNull( test3 ) );
输出如下:
test1 trimToNull: null
test2 trimToNull: A Test
test3 trimToNull: null
注意:函数StringUtils.trim(testString)与
StringUtils.trimToNull(testString)功能类似,但testString由空白字符
(whitespace)组成时返回零长度字符串。
3.取得字符串的缩写
使用函数: StringUtils.abbreviate(testString,width)和StringUtils.abbreviate(testString,offset,width)
函数介绍:在给定的width内取得testString的缩写,当testString的长度小于width则返回原字符串.
例程:
String test = "This is a test of the abbreviation.";
String test2 = "Test";
System.out.println( StringUtils.abbreviate( test, 15 ) );
System.out.println( StringUtils.abbreviate( test, 5,15 ) );
System.out.println( StringUtils.abbreviate( test2, 10 ) );
输出如下:
This is a te...
...is a test...
Test
4.劈分字符串
使用函数: StringUtils.split(testString,splitChars,arrayLength)
函数介绍:splitChars中可以包含一系列的字符串来劈分testString,并可以设定得
到数组的长度.注意设定长度arrayLength和劈分字符串间有抵触关系,建议一般情况下
不要设定长度.
例程:
String input = "A b,c.d|e";
String input2 = "Pharmacy, basketball funky";
String[] array1 = StringUtils.split( input, " ,.|");
String[] array2 = StringUtils.split( input2, " ,", 2 );
System.out.println( ArrayUtils.toString( array1 ) );
System.out.println( ArrayUtils.toString( array2 ) );
输出如下:
{A,b,c,d,e}
{Pharmacy,basketball funky}
5.查找嵌套字符串
使用函数:StringUtils.substringBetween(testString,header,tail)
函数介绍:在testString中取得header和tail之间的字符串。不存在则返回空
例程:
String htmlContent = "ABC1234ABC4567";
System.out.println(StringUtils.substringBetween(htmlContent, "1234", "4567"));
System.out.println(StringUtils.substringBetween(htmlContent, "12345", "4567"));
输出如下:
ABC
null
6.去除尾部换行符
使用函数:StringUtils.chomp(testString)
函数介绍:去除testString尾部的换行符
例程:
String input = "Hello/n";
System.out.println( StringUtils.chomp( input ));
String input2 = "Another test/r/n";
System.out.println( StringUtils.chomp( input2 ));
输出如下:
Hello
Another test
7.重复字符串
使用函数:StringUtils.repeat(repeatString,count)
函数介绍:得到将repeatString重复count次后的字符串
例程:
System.out.println( StringUtils.repeat( "*", 10));
System.out.println( StringUtils.repeat( "China ", 5));
输出如下:
**********
China China China China China
其他函数:StringUtils.center( testString, count,repeatString );
函数介绍:把testString插入将repeatString重复多次后的字符串中间,得到字符串
的总长为count
例程:
System.out.println( StringUtils.center( "China", 11,"*"));
输出如下:
***China***
8.颠倒字符串
使用函数:StringUtils.reverse(testString)
函数介绍:得到testString中字符颠倒后的字符串
例程:
System.out.println( StringUtils.reverse("ABCDE"));
输出如下:
EDCBA
9.判断字符串内容的类型
函数介绍:
StringUtils.isNumeric( testString ) :如果testString全由数字组成返回True
StringUtils.isAlpha( testString ) :如果testString全由字母组成返回True
StringUtils.isAlphanumeric( testString ) :如果testString全由数字或数字组
成返回True
StringUtils.isAlphaspace( testString ) :如果testString全由字母或空格组
成返回True
例程:
String state = "Virginia";
System.out.println( "Is state number? " + StringUtils.isNumeric(
state ) );
System.out.println( "Is state alpha? " + StringUtils.isAlpha( state )
);
System.out.println( "Is state alphanumeric? " +StringUtils.isAlphanumeric( state ) );
System.out.println( "Is state alphaspace? " + StringUtils.isAlphaSpace( state ) );
输出如下:
Is state number? false
Is state alpha? true
Is state alphanumeric? true
Is state alphaspace? true
10.取得某字符串在另一字符串中出现的次数
使用函数:StringUtils.countMatches(testString,seqString)
函数介绍:取得seqString在testString中出现的次数,未发现则返回零
例程:
System.out.println(StringUtils.countMatches( "Chinese People", "e"
));
输出:
4
11.部分截取字符串
使用函数:
StringUtils.substringBetween(testString,fromString,toString ):取得两字符
之间的字符串
StringUtils.substringAfter( ):取得指定字符串后的字符串
StringUtils.substringBefore( ):取得指定字符串之前的字符串
StringUtils.substringBeforeLast( ):取得最后一个指定字符串之前的字符串
StringUtils.substringAfterLast( ):取得最后一个指定字符串之后的字符串
函数介绍:上面应该都讲明白了吧。
例程:
String formatted = " 25 * (30,40) [50,60] | 30";
System.out.print("N0: " + StringUtils.substringBeforeLast( formatted, "*" ) );
System.out.print(", N1: " + StringUtils.substringBetween( formatted, "(", "," ) );
System.out.print(", N2: " + StringUtils.substringBetween( formatted, ",", ")" ) );
System.out.print(", N3: " + StringUtils.substringBetween( formatted, "[", "," ) );
System.out.print(", N4: " + StringUtils.substringBetween( formatted, ",", "]" ) );
System.out.print(", N5: " + StringUtils.substringAfterLast( formatted, "|" ) );
输出如下:
N0: 25 , N1: 30, N2: 40, N3: 50, N4: 40) [50,60, N5: 30
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kinglino520/archive/2009/06/17/4276421.aspx