java与commons_Jakarta项目的commons包

在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

资源简介 Jakarta commons docs API CHM 格式带索引和全文搜索,方便携带和查询。 Jakarta commons 含很多可复用的通用组件。 commons-attributes 让开发者可以使用 C# 或 .net 样式的 attributes, 是一种运行时的 api, 有点类似 doclet commons-beanutils 提供对 Java 反射和自省API的commons-betwixt 这个组件提供一个XML自省(introspection)机制用来把Java Bean映射到XML文档 commons-chain 提供实现组织复杂的处理流程的“责任链模式” commons-cli 命令行参数解析 , 由 Werken, Avalon 和 Optz 组成 commons-codec 含一些通用的编码解码算法。括一些语音编码器, Hex, Base64, 以及URL encoder. commons-collections 扩充了 java.util.collection 接口 commons-compress 操作压缩文件的 API commons-configuration 可以从xml、properties、JNDI、JDBC、System properties、Applet parameters和Servlet parameters等读取信息 commons-daemon 可以帮你实现将一个普通的 Java 应用变成系统的一个后台服务 commons-dbcp 数据连接池服务 commons-dbutils JDBC 辅助类 commons-digester XML 文件到 Java 对象的映射机制 commons-discovery 提供工具来定位资源 (括类) ,通过使用各种模式来映射服务/引用名称和资源名称。 commons-el 提供在JSP2.0规范中定义的EL表达式的解释器. commons-email 提供一组用于发送Email的API,它基于Java Mail API基础之上并进行了简化 commons-exec 处理外部进程的执行或管理外部环境 commons-fileupload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 commons-io 用来帮助进行IO功能开发.它含三个主要的领域:Utility classes-提供一些静态方法来完成公共任务.Filters-提供文件过滤器的各种实现.Streams-提供实用的Stream,reader与 writer实现 commons-jelly 能够把XML转换成可执行代码,所以Jelly是一个基于XML与Java的脚本和处理引擎 commons-jexl 是一个表达式语言,通过借鉴来自于Velocity的经验扩展了JSTL定义的表达式语言 commons-jxpath 定义了一个简单的XPath表达式语言的解析器.JXPath应用XPath表达式来操纵各种类型的对象括:JavaBeans,Maps,Servlet contexts,DOM等 commons-lang commons的基础 commons-launcher 提供多平台的 Java 程序加载 commons-logging 提供日志的实现 commons-math 是一个轻量的,自含的数学和统计组件,解决了许多非常通用但没有及时出现在Java标准语言中的实践问题. commons-modeler 创建符合 JMX 规范的 MBeans 机制 commons-net 网络和协议实现的集合 commons-pool 提供了通用对象池接口,一个用于创建模块化对象池的工具,以及通常的对象池实 commons-primitives java 简单类型使用的扩展 commons-proxy 创建动态代理的库 commons-scxml commons-transaction 处理多级事务的集合 commons-validator 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器 (校验方法)和校验规则 commons-vfs 虚拟文件系统 httpcomponents-client 和 http 协议客户端一起协作的框架 httpcomponents-core jakarta-oro 一套文本处理工具,能提供perl5.0兼容的正则表达式,AWK-like正则表达式, glob表达式。还提供替换,分割,文件名过虑等功能 jakarta-regexp 是一个100%纯java正则式处理,是Jonathan Locke捐给Apache软件基金会的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值