package 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方法了,为何我们还需要一个第三方的实现呢? 

这个问题很好,让我们来看看下面这些代码,看看有何问题? 

Java代码 
  1. public void doStuffWithString(String stringParam) {    
  2. if(stringParam.equals("MyStringValue")) {    
  3. // do stuff }    
  4. }   
  1. public void doStuffWithString(String stringParam) {   
  2. if(stringParam.equals("MyStringValue")) {   
  3. // do stuff }   
  4. }   


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

Java代码 
  1. public void safeDoStuffWithString1(String stringParam) {    
  2. if(stringParam != null &&    
  3. stringParam.equals("MyStringValue")) {    
  4. // do stuff    
  5. }    
  6. }     
  7. public void safeDoStuffWithString2(String stringParm) {    
  8. if("MyStringValue".equals(stringParam))    
  9. {    
  10. // do stuff    
  11. }    
  12. }   
  1. public void safeDoStuffWithString1(String stringParam) {   
  2. if(stringParam != null &&   
  3. stringParam.equals("MyStringValue")) {   
  4. // do stuff   
  5. }   
  6. }    
  7. public void safeDoStuffWithString2(String stringParm) {   
  8. if("MyStringValue".equals(stringParam))   
  9. {   
  10. // do stuff   
  11. }   
  12. }   


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

Java代码 
  1. public void safeDoStuffWithString3(String stringParam) {   
  2. if(StringUtils.equals(stringParam,"MyStringValue))    
  3. {    
  4. // do stuff    
  5. }    
  6. }   
  1. public void safeDoStuffWithString3(String stringParam) {  
  2. if(StringUtils.equals(stringParam,"MyStringValue))   
  3. {   
  4. // do stuff   
  5. }   
  6. }   



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

2)isEmpty,isNotEmpty,isBlank,isNotBlank  

和前面一样,这些方法相对于jdk提供的isEmpty方法来说,多了一个“空指针安全”,即不用考虑传递参数的空值问题,让我们来看一个例子: 

Java代码 
  1. if(myString != null && !myString.isEmpty()) {    
  2. // 有点臃肿是把?   
  3. // Do stuff with myString    
  4. }    
  5.     
  6. if(StringUtils.isNotEmpty(myString)) { // 好多了吧    
  7. // Do stuff with myString    
  8. }   
  1. if(myString != null && !myString.isEmpty()) {   
  2. // 有点臃肿是把?  
  3. // Do stuff with myString   
  4. }   
  5.    
  6. if(StringUtils.isNotEmpty(myString)) { // 好多了吧   
  7. // Do stuff with myString   
  8. }   


Blank和empty的区别  

isBlank将在字符串含有空白字符的时候,返回true,例如: 

Java代码 
  1. String someWhiteSpace = " \t \n";    
  2. StringUtils.isEmpty(someWhiteSpace); // false    
  3. StringUtils.isBlank(someWhiteSpace); // true   
  1. String someWhiteSpace = " \t \n";   
  2. StringUtils.isEmpty(someWhiteSpace); // false   
  3. StringUtils.isBlank(someWhiteSpace); // true   


3)public static String[] split(String str,String separatorChars)  
当然,这个方法相对于String.split也是 空指针安全 的,当你尝试 split一个null字符串 的时候,将返回Null,一个Null的分隔符将按照空白字符分隔字符串,但是,还有一个理由让你可考虑使用StringUtils.split()方法,就是jdk自带的String.split由于支持正则表达式进行分隔,所以可能带来意想不到的后果,例如: 
Java代码 
  1. public void possiblyNotWhatYouWant() {   
  2. String contrivedExampleString = "one.two.three.four";    
  3. String[] result = contrivedExampleString.split(".");    
  4. System.out.println(result.length); // 0    
  5. }  
  1. public void possiblyNotWhatYouWant() {  
  2. String contrivedExampleString = "one.two.three.four";   
  3. String[] result = contrivedExampleString.split(".");   
  4. System.out.println(result.length); // 0   
  5. }  

上面很明显你希望按照.分隔,但是jdk理解的“.”是正则表达式的任意字符,导致字符串内任意字符都匹配,返回一个size=0的字符串数组。其实你只要传递"\\."就行了,但是这个确实是一个问题。  
这样,使用StringUtils.split就简单多了,另外,我测试还发现StringUtils.split比jdk自带的split要快四倍。 

4)public static String join (Iterable iterable,String separator)  
这个方法确实很实用 ,因为jdk自身没有提供,简单使用方法: 

Java代码 
  1. String[] numbers = {"one""two""three"};   
  2. StringUtils.join(numbers,","); // returns "one,two,three"   
  1. String[] numbers = {"one""two""three"};  
  2. StringUtils.join(numbers,","); // returns "one,two,three"   

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



在JAVA中我们用的最多的类应该就是String了。对于String的处理说简单也简单,但是有的时候要自己去实现一些功能还是要浪费一点时间的。一年之前接触了StringUtils这个工具类,就猛然爱上了它,日复一日心里始终觉得这东西实在太好了。不敢独享,所以决定要总结一下个人使用StringUtils的一些心得。

1.StringUtils.isEmpty(String str)
  经常需要去判断一个字符串是否为空,null,""。使用该方法可以轻松得到结论:

StringUtils.isEmpty(null) = true 
StringUtils.isEmpty("") = true 
StringUtils.isEmpty(" ") = false 
StringUtils.isEmpty("        ")  = false 
StringUtils.isEmpty("aa") = false 
StringUtils.isEmpty(" aaa ") = false 

 

2.StringUtils.isNotEmpty(String str)
  判断字符串是否非空,通过查看commons.lang.StringUtils的源码可以发现isNotEmpty是这样实现的:

 

public  static  boolean isNotEmpty(String str) {
       return !isEmpty(str);
}

 

使用和1中一样的参数调用isNotEmpty(String str)得到的结果:

 

StringUtils.isNotEmpty( null); // false  
StringUtils.isNotEmpty(""); // false  
StringUtils.isNotEmpty(" "); // true  
StringUtils.isNotEmpty("         "); // true  
StringUtils.isNotEmpty("aa"); // true  
StringUtils.isNotEmpty(" aaa "); // true

 

3.StringUtils.isBlank(String str)

    判断字符串是否为空和空字符

 

复制代码
System.out.println(StringUtils.isBlank( null)); // true
System.out.println(StringUtils.isBlank("")); // true
System.out.println(StringUtils.isBlank(" ")); // true
System.out.println(StringUtils.isBlank("   ")); // true
System.out.println(StringUtils.isBlank("\n\t")); // true
System.out.println(StringUtils.isBlank("aaa")); //false
System.out.println(StringUtils.isBlank(" aa ")); //false
复制代码

 

4.StringUtils.isNotBlank(String str)

和之前说的isNotEmpty(String str) 一样该方法也是: retrurn !isBlank(str);

 

5.StringUtils.defaultIfEmpty(String str, String defalutValue)

如果字符串为""或者 null 则替换成参数2中的字符串:

System.out.println("1: " + StringUtils.defaultIfEmpty("", "a"));//1: a

 

System.out.println("2: " + StringUtils.defaultIfEmpty("\n\t", "a"));//2: 
System.out.println("3: " + StringUtils.defaultIfEmpty("", "a"));//3: a
System.out.println("4: " + StringUtils.defaultIfEmpty("   ", "a"));//4:    
System.out.println("5: " + StringUtils.defaultIfEmpty("aaa", "a"));//5: aaa
System.out.println("6: " + StringUtils.defaultIfEmpty(" 
aaa  ", "a")); // 6:  aaa 
System.out.println("7: " + StringUtils.defaultIfEmpty( null , "a")); // 7: a

 

6. StringUtils.defaultString(String str, String defaultValue)

  和5相似:

 

System.out.println("1: " + StringUtils.defaultString( null, "a")); // 1: a
System.out.println("2: " + StringUtils.defaultString("", "a")); // 2: 
System.out.println("3: " + StringUtils.defaultString(" ", "a")); // 3:  
System.out.println("4: " + StringUtils.defaultString("\n\t", "a")); // 4: 
System.out.println("5: " + StringUtils.defaultString("aa", "a")); // 5: aa
System.out.println("6: " + StringUtils.defaultString(" aaa", "a")); // 6:  aaa

 

7.StringUtils.capitalize(String str)

首字母大写

System.out.println(StringUtils.capitalize("xxxx"));//Xxxx

 

System.out.println(StringUtils.capitalize("Xxxx"));//Xxxx
System.out.println(StringUtils.capitalize("
  xxxx")); //  xxxx

 

8.StringUtils.remove(String str, String removeStr)

从str中去除removeStr

System.out.println(StringUtils.remove("abcd", "ab")); // cd
System.out.println(StringUtils.remove("abcd", "ad")); // abcd

类似方法有

StringUtils.removeEnd(arg0, arg1)

StringUtils.removeStart(arg0, arg1)

 

9.StringUtils.countMatches(String str, String find)

计算字符串在另一个字符串中出现的次数:

 

int nCount = StringUtils.countMatches("UPDATE tb_table SET xx=?,xyz=?, sss=? WHERE id=?", "?");

nCount = 4
这个方法甚妙!个人使用这个方法写了一个自动给预编译语句设置参数的方法,用起来得心应手省了不少事!

 

10.常用用法举例

 

 

复制代码
public  static  void TestStr(){
// null 和 ""操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 判断是否Null 或者 ""
System.out.println(StringUtils.isEmpty( null));
System.out.println(StringUtils.isNotEmpty( null));
// 判断是否null 或者 "" 去空格~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.out.println(StringUtils.isBlank(" "));
System.out.println(StringUtils.isNotBlank( null));
// 去空格.Null返回null~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System.out.println(StringUtils.trim( null));
// 去空格,将Null和"" 转换为Null
System.out.println(StringUtils.trimToNull(""));
// 去空格,将NULL 和 "" 转换为""
System.out.println(StringUtils.trimToEmpty( null));
// 可能是对特殊空格符号去除??
System.out.println(StringUtils.strip("大家好 啊 \t"));
// 同上,将""和null转换为Null
System.out.println(StringUtils.stripToNull(" \t"));
// 同上,将""和null转换为""
System.out.println(StringUtils.stripToEmpty( null));
// 将""或者Null 转换为 ""
System.out.println(StringUtils.defaultString( null));
// 仅当字符串为Null时 转换为指定的字符串(二参数)
System.out.println(StringUtils.defaultString("", "df"));
// 当字符串为null或者""时,转换为指定的字符串(二参数)
System.out.println(StringUtils.defaultIfEmpty( null, "sos"));
// 去空格.去字符~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 如果第二个参数为null去空格(否则去掉字符串2边一样的字符,到不一样为止)
System.out.println(StringUtils.strip("fsfsdf", "f"));
// 如果第二个参数为null只去前面空格(否则去掉字符串前面一样的字符,到不一样为止)
System.out.println(StringUtils.stripStart("ddsuuu ", "d"));
// 如果第二个参数为null只去后面空格,(否则去掉字符串后面一样的字符,到不一样为止)
System.out.println(StringUtils.stripEnd("dabads", "das"));
// 对数组没个字符串进行去空格。
// ArrayToList(StringUtils.stripAll(new String[]{" 中华 ", "民 国 ", "共和 "}));
// 如果第二个参数为null.对数组每个字符串进行去空格。(否则去掉数组每个元素开始和结尾一样的字符)
// ArrayToList(StringUtils.stripAll(new String[]{" 中华 ", "民 国", "国共和国"}, "国"));
// 查找,判断~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 判断2个字符串是否相等相等,Null也相等
System.out.println(StringUtils.equals( nullnull));
// 不区分大小写比较
System.out.println(StringUtils.equalsIgnoreCase("abc", "ABc"));
// 查找,不知道怎么弄这么多查找,很多不知道区别在哪?费劲~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 普通查找字符,如果一参数为null或者""返回-1
System.out.println(StringUtils.indexOf( null, "a"));
// 从指定位置(三参数)开始查找,本例从第2个字符开始查找k字符
System.out.println(StringUtils.indexOf("akfekcd中华", "k", 2));
// 未发现不同之处
System.out.println(StringUtils.ordinalIndexOf("akfekcd中华", "k", 2));
// 查找,不区分大小写
System.out.println(StringUtils.indexOfIgnoreCase("adfs", "D"));
// 从指定位置(三参数)开始查找,不区分大小写
System.out.println(StringUtils.indexOfIgnoreCase("adfs", "a", 3));
// 从后往前查找
System.out.println(StringUtils.lastIndexOf("adfas", "a"));
// 未理解,此结果为2
System.out.println(StringUtils.lastIndexOf("d饿abasdafs我", "a", 3));
// 未解,此结果为-1
System.out.println(StringUtils.lastOrdinalIndexOf("yksdfdht", "f", 2));
// 从后往前查,不区分大小写
System.out.println(StringUtils.lastIndexOfIgnoreCase("sdffet", "E"));
// 未解,此结果为1
System.out.println(StringUtils.lastIndexOfIgnoreCase("efefrfs看", "F" , 2));
// 检查是否查到,返回boolean,null返回假
System.out.println(StringUtils.contains("sdf", "dg"));
// 检查是否查到,返回boolean,null返回假,不区分大小写
System.out.println(StringUtils.containsIgnoreCase("sdf", "D"));
// 检查是否有含有空格,返回boolean
System.out.println(StringUtils.containsWhitespace(" d"));
// 查询字符串跟数组任一元素相同的第一次相同的位置
System.out.println(StringUtils.indexOfAny("absfekf",  new String[]{"f", "b"}));
// 查询字符串中指定字符串(参数二)出现的次数
System.out.println(StringUtils.indexOfAny("afefes", "e"));
// 查找字符串中是否有字符数组中相同的字符,返回boolean
System.out.println(StringUtils.containsAny("asfsd",  new  char[]{'k', 'e', 's'}));
// 未理解与lastIndexOf不同之处。是否查到,返回boolean
System.out.println(StringUtils.containsAny("啡f咖啡", "咖"));
// 未解
System.out.println(StringUtils.indexOfAnyBut("seefaff", "af"));
// 判断字符串中所有字符,都是出自参数二中。
System.out.println(StringUtils.containsOnly("中华华", "华"));
// 判断字符串中所有字符,都是出自参数二的数组中。
System.out.println(StringUtils.containsOnly("中华中",  new  char[]{'中', '华'}));
// 判断字符串中所有字符,都不在参数二中。
System.out.println(StringUtils.containsNone("中华华", "国"));
// 判断字符串中所有字符,都不在参数二的数组中。
System.out.println(StringUtils.containsNone("中华中",  new  char[]{'中', '达人'}));
// 从后往前查找字符串中与字符数组中相同的元素第一次出现的位置。本例为4
System.out.println(StringUtils.lastIndexOfAny("中国人民共和国",  new String[]{"国人", "共和"}));
// 未发现与indexOfAny不同之处 查询字符串中指定字符串(参数二)出现的次数
System.out.println(StringUtils.countMatches("中国人民共和中国", "中国"));
// 检查是否CharSequence的只包含Unicode的字母。空将返回false。一个空的CharSequence(长()= 0)将返回true
System.out.println(StringUtils.isAlpha("这是干什么的2"));
// 检查是否只包含Unicode的CharSequence的字母和空格('')。空将返回一个空的CharSequence假(长()= 0)将返回true。
System.out.println(StringUtils.isAlphaSpace("NBA直播 "));
// 检查是否只包含Unicode的CharSequence的字母或数字。空将返回false。一个空的CharSequence(长()= 0)将返回true。
System.out.println(StringUtils.isAlphanumeric("NBA直播"));
// 如果检查的Unicode CharSequence的只包含字母,数字或空格('')。空将返回false。一个空的CharSequence(长()= 0)将返回true。
System.out.println(StringUtils.isAlphanumericSpace("NBA直播"));
// 检查是否只包含ASCII可CharSequence的字符。空将返回false。一个空的CharSequence(长()= 0)将返回true。
System.out.println(StringUtils.isAsciiPrintable("NBA直播"));
// 检查是否只包含数值。
System.out.println(StringUtils.isNumeric("NBA直播"));
// 检查是否只包含数值或者空格
System.out.println(StringUtils.isNumericSpace("33 545"));
// 检查是否只是空格或""。
System.out.println(StringUtils.isWhitespace(" "));
// 检查是否全是英文小写。
System.out.println(StringUtils.isAllLowerCase("kjk33"));
// 检查是否全是英文大写。
System.out.println(StringUtils.isAllUpperCase("KJKJ"));
// 交集操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 去掉参数2字符串中在参数一中开头部分共有的部分,结果为:人民共和加油
System.out.println(StringUtils.difference("中国加油", "中国人民共和加油"));
// 统计2个字符串开始部分共有的字符个数
System.out.println(StringUtils.indexOfDifference("ww.taobao", "www.taobao.com"));
// 统计数组中各个元素的字符串开始都一样的字符个数
System.out.println(StringUtils.indexOfDifference( new String[] {"中国加油", "中国共和", "中国人民"}));
// 取数组每个元素共同的部分字符串
System.out.println(StringUtils.getCommonPrefix( new String[] {"中国加油", "中国共和", "中国人民"}));
// 统计参数一中每个字符与参数二中每个字符不同部分的字符个数
System.out.println(StringUtils.getLevenshteinDistance("中国共和发国人民", "共和国"));
// 判断开始部分是否与二参数相同
System.out.println(StringUtils.startsWith("中国共和国人民", "中国"));
// 判断开始部分是否与二参数相同。不区分大小写
System.out.println(StringUtils.startsWithIgnoreCase("中国共和国人民", "中国"));
// 判断字符串开始部分是否与数组中的某一元素相同
System.out.println(StringUtils.startsWithAny("abef",  new String[]{"ge", "af", "ab"}));
// 判断结尾是否相同
System.out.println(StringUtils.endsWith("abcdef", "def"));
// 判断结尾是否相同,不区分大小写
System.out.println(StringUtils.endsWithIgnoreCase("abcdef", "Def"));
// 字符串截取~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 截取指定位置的字符,null返回null.""返回""
System.out.println(StringUtils.substring("国民党", 2));
// 截取指定区间的字符
System.out.println(StringUtils.substring("中国人民共和国", 2, 4));
// 从左截取指定长度的字符串
System.out.println(StringUtils.left("说点什么好呢", 3));
// 从右截取指定长度的字符串
System.out.println(StringUtils.right("说点什么好呢", 3));
// 从第几个开始截取,三参数表示截取的长度
System.out.println(StringUtils.mid("说点什么好呢", 3, 2));
// 截取到等于第二个参数的字符串为止
System.out.println(StringUtils.substringBefore("说点什么好呢", "好"));
// 从左往右查到相等的字符开始,保留后边的,不包含等于的字符。本例:什么好呢
System.out.println(StringUtils.substringAfter("说点什么好呢", "点"));
// 这个也是截取到相等的字符,但是是从右往左.本例结果:说点什么好
System.out.println(StringUtils.substringBeforeLast("说点什么好点呢", "点"));
// 这个截取同上是从右往左。但是保留右边的字符
System.out.println(StringUtils.substringAfterLast("说点什么好点呢?", "点"));
// 截取查找到第一次的位置,和第二次的位置中间的字符。如果没找到第二个返回null。本例结果:2010世界杯在
System.out.println(StringUtils.substringBetween("南非2010世界杯在南非,在南非", "南非"));
// 返回参数二和参数三中间的字符串,返回数组形式
// ArrayToList(StringUtils.substringsBetween("[a][b][c]", "[", "]"));
// 分割~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 用空格分割成数组,null为null
// ArrayToList(StringUtils.split("中华 人民 共和"));
// 以指定字符分割成数组
// ArrayToList(StringUtils.split("中华 ,人民,共和", ","));
// 以指定字符分割成数组,第三个参数表示分隔成数组的长度,如果为0全体分割
// ArrayToList(StringUtils.split("中华 :人民:共和", ":", 2));
// 未发现不同的地方,指定字符分割成数组
// ArrayToList(StringUtils.splitByWholeSeparator("ab-!-cd-!-ef", "-!-"));
// 未发现不同的地方,以指定字符分割成数组,第三个参数表示分隔成数组的长度
// ArrayToList(StringUtils.splitByWholeSeparator("ab-!-cd-!-ef", "-!-", 2));
// 分割,但" "不会被忽略算一个元素,二参数为null默认为空格分隔
// ArrayToList(StringUtils.splitByWholeSeparatorPreserveAllTokens(" ab de fg ", null));
// 同上,分割," "不会被忽略算一个元素。第三个参数代表分割的数组长度。
// ArrayToList(StringUtils.splitByWholeSeparatorPreserveAllTokens("ab de fg", null, 3));
// 未发现不同地方,分割
// ArrayToList(StringUtils.splitPreserveAllTokens(" ab de fg "));
// 未发现不同地方,指定字符分割成数组
// ArrayToList(StringUtils.splitPreserveAllTokens(" ab de fg ", null));
// 未发现不同地方,以指定字符分割成数组,第三个参数表示分隔成数组的长度
// ArrayToList(StringUtils.splitPreserveAllTokens(" ab de fg ", null, 2));
// 以不同类型进行分隔
// ArrayToList(StringUtils.splitByCharacterType("AEkjKr i39:。中文"));
// 未解
// ArrayToList(StringUtils.splitByCharacterTypeCamelCase("ASFSRules234"));
// 拼接~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 将数组转换为字符串形式
System.out.println(StringUtils.concat(getArrayData()));
// 拼接时用参数一得字符相连接.注意null也用连接符连接了
System.out.println(StringUtils.concatWith(",", getArrayData()));
// 也是拼接。未发现区别
System.out.println(StringUtils.join(getArrayData()));
// 用连接符拼接,为发现区别
System.out.println(StringUtils.join(getArrayData(), ":"));
// 拼接指定数组下标的开始(三参数)和结束(四参数,不包含)的中间这些元素,用连接符连接
System.out.println(StringUtils.join(getArrayData(), ":", 1, 3));
// 用于集合连接字符串.用于集合
System.out.println(StringUtils.join(getListData(), ":"));
// 移除,删除~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 删除所有空格符
System.out.println(StringUtils.deleteWhitespace(" s 中 你 4j"));
// 移除开始部分的相同的字符
System.out.println(StringUtils.removeStart("www.baidu.com", "www."));
// 移除开始部分的相同的字符,不区分大小写
System.out.println(StringUtils.removeStartIgnoreCase("www.baidu.com", "WWW"));
// 移除后面相同的部分
System.out.println(StringUtils.removeEnd("www.baidu.com", ".com"));
// 移除后面相同的部分,不区分大小写
System.out.println(StringUtils.removeEndIgnoreCase("www.baidu.com", ".COM"));
// 移除所有相同的部分
System.out.println(StringUtils.remove("www.baidu.com/baidu", "bai"));
// 移除结尾字符为"\n", "\r", 或者 "\r\n".
System.out.println(StringUtils.chomp("abcrabc\r"));
// 也是移除,未解。去结尾相同字符
System.out.println(StringUtils.chomp("baidu.com", "com"));
// 去掉末尾最后一个字符.如果是"\n", "\r", 或者 "\r\n"也去除
System.out.println(StringUtils.chop("wwe.baidu"));
// 替换~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 替换指定的字符,只替换第一次出现的
System.out.println(StringUtils.replaceOnce("www.baidu.com/baidu", "baidu", "hao123"));
// 替换所有出现过的字符
System.out.println(StringUtils.replace("www.baidu.com/baidu", "baidu", "hao123"));
// 也是替换,最后一个参数表示替换几个
System.out.println(StringUtils.replace("www.baidu.com/baidu", "baidu", "hao123", 1));
// 这个有意识,二三参数对应的数组,查找二参数数组一样的值,替换三参数对应数组的值。本例:baidu替换为taobao。com替换为net
System.out.println(StringUtils.replaceEach("www.baidu.com/baidu",  new String[]{"baidu", "com"},  new String[]{"taobao", "net"}));
// 同上,未发现不同
System.out.println(StringUtils.replaceEachRepeatedly("www.baidu.com/baidu",  new String[]{"baidu", "com"},  new String[]{"taobao", "net"}));
// 这个更好,不是数组对应,是字符串参数二和参数三对应替换.(二三参数不对应的话,自己看后果)
System.out.println(StringUtils.replaceChars("www.baidu.com", "bdm", "qo"));
// 替换指定开始(参数三)和结束(参数四)中间的所有字符
System.out.println(StringUtils.overlay("www.baidu.com", "hao123", 4, 9));
// 添加,增加~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 复制参数一的字符串,参数二为复制的次数
System.out.println(StringUtils.repeat("ba", 3));
// 复制参数一的字符串,参数三为复制的次数。参数二为复制字符串中间的连接字符串
System.out.println(StringUtils.repeat("ab", "ou", 3));
// 如何字符串长度小于参数二的值,末尾加空格补全。(小于字符串长度不处理返回)
System.out.println(StringUtils.rightPad("海川", 4));
// 字符串长度小于二参数,末尾用参数三补上,多于的截取(截取补上的字符串)
System.out.println(StringUtils.rightPad("海川", 4, "河流啊"));
// 同上在前面补全空格
System.out.println(StringUtils.leftPad("海川", 4));
// 字符串长度小于二参数,前面用参数三补上,多于的截取(截取补上的字符串)
System.out.println(StringUtils.leftPad("海川", 4, "大家好"));
// 字符串长度小于二参数。在两侧用空格平均补全(测试后面补空格优先)
System.out.println(StringUtils.center("海川", 3));
// 字符串长度小于二参数。在两侧用三参数的字符串平均补全(测试后面补空格优先)
System.out.println(StringUtils.center("海川", 5, "流"));
// 只显示指定数量(二参数)的字符,后面以三个点补充(参数一截取+三个点=二参数)
System.out.println(StringUtils.abbreviate("中华人民共和国", 5));
// 2头加点这个有点乱。本例结果: ...ijklmno
System.out.println(StringUtils.abbreviate("abcdefghijklmno", 12, 10));
// 保留指定长度,最后一个字符前加点.本例结果: ab.f
System.out.println(StringUtils.abbreviateMiddle("abcdef", ".", 4));
// 转换,刷选~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// 转换第一个字符为大写.如何第一个字符是大写原始返回
System.out.println(StringUtils.capitalize("Ddf"));
// 转换第一个字符为大写.如何第一个字符是大写原始返回
System.out.println(StringUtils.uncapitalize("DTf"));
// 反向转换,大写变小写,小写变大写
System.out.println(StringUtils.swapCase("I am Jiang, Hello"));
// 将字符串倒序排列
System.out.println(StringUtils.reverse("中国人民"));
// 根据特定字符(二参数)分隔进行反转
System.out.println(StringUtils.reverseDelimited("中:国:人民", ':'));
}



// 将数组转换为List
private  static  void ArrayToList(String[] str){
System.out.println(Arrays.asList(str) + " 长度:" + str.length);
}

// 获得集合数据
private  static List getListData(){
List list =  new ArrayList();
list.add("你好");
list.add( null);
list.add("他好");
list.add("大家好");
return list;
}

// 获得数组数据  
private  static String[] getArrayData(){
return (String[]) getListData().toArray( new String[0]);
}

public  static  void main(String[] args) {
TestStr();
}

猜你喜欢

转载自blog.csdn.net/weixin_41233524/article/details/80415158