文档章节

org.apache.commons.lang.StringUtils介绍

mr桀骜不驯
 mr桀骜不驯
发布于 2013/03/11 14:55
字数 852
阅读 254
收藏 5
apache commons StringUtils介绍 

org.apache.commons.lang.StringUtils  


StringUtils是apache commons lang库( http://commons.apache.org/lang )旗下的一个工具类,提供了很多有用的处理字符串的方法,本文不打算把所有的方法都介绍一遍,我会介绍一些精选的常用的给大家。 


目前StringUtils有两个版本可用,分别是较新的org.apache.commons.lang3.StringUtils和较老的org.apache.commons.lang.StringUtils,他们有比较 大的区别,前者需要JAVA 5,我想这个应该是我们希望使用的。 


1)public static boolean equals(CharSequence str1,CharSequence str2)  

我们就先从最简单的方法equals开始,和你想的一样,他需要两个字符串参数,当相同的时候返回true,否则返回false。 

但是java.lang.String已经有现成的比较完美的equals方法了,为何我们还需要一个第三方的实现呢? 

这个问题很好,让我们来看看下面这些代码,看看有何问题? 
public void doStuffWithString(String stringParam) {   
if(stringParam.equals("MyStringValue")) {   
// do stuff }   
}



这个可能有NullPointerException出现,那么有几个办法处理: 

public void safeDoStuffWithString1(String stringParam) {   
if(stringParam != null &&   
stringParam.equals("MyStringValue")) {   
// do stuff   
}   
}    
public void safeDoStuffWithString2(String stringParm) {   
if("MyStringValue".equals(stringParam))   
{   
// do stuff   
}   
}



我本人不喜欢上面的两个方法,第一个看起来太臃肿,第二个看起来像错误的。这里我们就可以用一些StringUtils类了,这个类提供的equals方法是空指针安全的,不用担心传递给他的是什么参数,他不会抛出空指针异常,这样写: 

public void safeDoStuffWithString3(String stringParam) {  
if(StringUtils.equals(stringParam,"MyStringValue))   
{   
// do stuff   
}   
}




这个是我个人的喜好,但是这个确实看起来比较简单易读。前面的两个方法虽然么有什么问题,但是我想StringUtils.equals还是值得考虑的。 

2)isEmpty,isNotEmpty,isBlank,isNotBlank  

和前面一样,这些方法相对于jdk提供的isEmpty方法来说,多了一个“空指针安全”,即不用考虑传递参数的空值问题,让我们来看一个例子: 
if(myString != null && !myString.isEmpty()) {   
// 有点臃肿是把?  
// Do stuff with myString   
}   
   
if(StringUtils.isNotEmpty(myString)) { // 好多了吧   
// Do stuff with myString   
}



Blank和empty的区别  

isBlank将在字符串含有空白字符的时候,返回true,例如: 
String someWhiteSpace = " \t \n";   
StringUtils.isEmpty(someWhiteSpace); // false   
StringUtils.isBlank(someWhiteSpace); // true
  



3)public static String[] split(String str,String separatorChars)  

当然,这个方法相对于String.split也是空指针安全的,当你尝试split一个null字符串的时候,将返回Null,一个Null的分隔符将按照空白字符分隔字符串,但是,还有一个理由让你可考虑使用StringUtils.split()方法,就是jdk自带的String.split由于支持正则表达式进行分隔,所以可能带来意想不到的后果,例如: 

public void possiblyNotWhatYouWant() {  
String contrivedExampleString = "one.two.three.four";   
String[] result = contrivedExampleString.split(".");   
System.out.println(result.length); // 0   
}
 
上面很明显你希望按照.分隔,但是jdk理解的“.”是正则表达式的任意字符,导致字符串内任意字符都匹配,返回一个size=0的字符串数组。其实你只要传递"\\."就行了,但是这个确实是一个问题。  
这样,使用StringUtils.split就简单多了,另外,我测试还发现StringUtils.split比jdk自带的split要快四倍。 

4)public static String join(Iterable iterable,String separator)  
这个方法确实很实用,因为jdk自身没有提供,简单使用方法: 
String[] numbers = {"one", "two", "three"};  
StringUtils.join(numbers,","); // returns "one,two,three"
 
  


当然你可以传递一个数字或者迭代序列iterators. 

本文转载自:http://vipcowrie.iteye.com/blog/1513017

mr桀骜不驯
粉丝 7
博文 12
码字总数 4596
作品 0
广州
程序员
私信 提问
springframework StringUtils和apache StringUtils的区别

org.springframework.util.StringUtils和org.apache.commons.lang.StringUtils 如题,两个StringUtils有什么区别...

aniuzeng
2017/08/01
702
1
Java实用的工具类StringUtils

org.apache.commons.lang.StringUtils中方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullP...

ben4
2017/07/17
0
0
org.apache.commons.lang.StringUtils

/* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information r......

城邑耕夫
2011/06/23
652
0
Java中判断字符串是否为数字的方法

一、 //方法一:用JAVA自带的函数public static boolean isNumeric(String str){ } /*方法二:推荐,速度最快 判断是否为整数 @param str 传入的字符串 @return 是整数返回true,否则返回fal...

easonjim
2017/12/13
0
0
StringUtils类中isEmpty与isBlank的区别

org.apache.commons.lang.StringUtils类提供了String的常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String str)。 StringUtils.isEmpty(String str) 判断某字符串是否为...

说回答
2018/07/23
25
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
32分钟前
11
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
7
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
今天
19
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
今天
72
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部