干掉你的StringUtils字符工具类

来源:互联网 发布:网络攻防web 编辑:程序博客网 时间:2024/05/20 06:06

干掉你的StringUtils字符工具类

 

 

可能每个java开发者都写过自己的StringUtils类,主要是java字符串处理非常频繁,但java.lang.String类提供的功能有限。

 

既然几乎每个人多需要字符串工具类,而jdk也没有提供,所有很多第三方提供了非常好用的工具类。代表性有Apache Commons 中的org.apache.commons.lang3.StringUtils,版本3需要java5及以上版本; Google Guava 中的 com.google.common.base包下面的类,主要有连接、分割、字符匹配和字处理等; Spring framework 中的 org.srpingframework.util.StringUtils,其提供了超过40个静态方法,用于字符串解析和操作。

先简单介绍下apache和google的类,spring的有机会再整理。

apache commons StringUtils

SplitString

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

        //Split a String intoan Array using # as seperator.

        String [] splitArr=StringUtils.split("AB#CD#EF#GH","#");

 

        for(int i=0; i<splitArr.length; i++ ) {

            System.out.println( i + ") "+splitArr[i]);

        }

    }

}

 

 

0)AB

1)CD

2)EF

3)GH

 

 

StringEscape

import org.apache.rumons.lang.StringEscapeUtils;

public classMainClass {

    public static void main(String[] args) {

        StringstrHTMLInput = "<P>MyName<P>";

        StringstrEscapeHTML = StringEscapeUtils.escapeHtml(strHTMLInput);

        String strUnEscapeHTML= StringEscapeUtils.unescapeHtml(strEscapeHTML);

        System.out.println("Escaped HTML >>> " +strEscapeHTML);

        System.out.println("UnEscaped HTML >>> " +strUnEscapeHTML);

    }

}

 

 

 

 

StringUtils.abbreviate

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

        //String can be max 12chars including the ...

        System.out.println("1) Abbreviate Once upon a time >>>" +

            StringUtils.abbreviate("Once upon a time ", 12));

    }

}

 

 

1)Abbreviate Once upon a time >>>Once upon...

 

 

StringUtils.chomp

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Remove the specifiedstring at the end of String

      System.out.println("3) Chomp END >>>" +

          StringUtils.chomp("A test String END", "END"));

 

 

    }

}

 

 

3)Chomp END >>>A test String

 

 

StringUtils.containsNone

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Check that a stringdoes not contain any of these characters !@#$%^&*

      System.out.println("14) Check that ABCD contains none of !@#$%^&*>>>" +

          StringUtils.containsNone("ABCD", "!@#$%^&*"));

    }

}

 

 

14)Check that ABCD contains none of !@#$%^&* >>>true

 

 

StringUtils.containsOnly

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Check if stringcontains only a specified set of characters. Return boolean

      System.out.println("4) Check if 643287460 contains only 0123456789>>>" +

          StringUtils.containsOnly("643287460", "0123456789"));

    }

}

 

 

4)Check if 643287460 contains only 0123456789 >>>true

 

 

StringUtils.defaultString

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Takes Object input andreturns Empty String if null.

      System.out.println("6) Return default string >>>" + "**" +

          StringUtils.defaultString(null) + "**");

    }

}

 

 

6)Return default string >>>****

 

 

StringUtils.difference

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Compare two strings.Case Sensitive

      System.out.println("5) Compare ABCDEFG and ABCdefg >>>" +

          StringUtils.difference("ABCDEFG", "ABCdefg"));

    }

}

 

 

5)Compare ABCDEFG and ABCdefg >>>defg

 

 

StringUtils.equals

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Compare Strings...NoNullPointer Exception!

      System.out.println("12) Comapre null and null >>>" +

          StringUtils.equals(null, null));

 

    }

}

 

 

12)Comapre null and null >>>true

 

 

StringUtils.indexOfDifference

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Returns index where theStrings start to differ

      System.out.println(

          "2) Index OfDifference between ABCXYZ and ABCPQR >>>" +

          StringUtils.indexOfDifference("ABCXYZ", "ABCPQR"));

 

    }

}

 

 

2)Index Of Difference between ABCXYZ and ABCPQR >>>3

 

 

StringUtils.join

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Join all Strings in theArray into a Single String, separated by $#$

      System.out.println("7) Join Strings using separator >>>" +

          StringUtils.join(new String[] { "AB","CD", "EF" }, "$#$"));

    }

}

 

 

7)Join Strings using separator >>>AB$#$CD$#$EF

 

 

StringUtils.reverse

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Reverse a String

      System.out.println("9) Reverse >>>" +StringUtils.reverse("REVERSE"));

    }

}

 

 

9)Reverse >>>ESREVER

 

 

StringUtils.stripToEmpty

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //Strip whitespace fromstart and end of the string.

      //If null returns emptystring

      System.out.println("13) Strip whitespace >>>" +

          StringUtils.stripToEmpty("    ABCD      "));

    }

}

 

 

13)Strip whitespace >>>ABCD

 

 

StringUtils.substring

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //SubString

      System.out.println("8) Substring >>>" +

          StringUtils.substring("SUBSTRING", 1, 5));

    }

}

 

 

8)Substring >>>UBST

 

 

StringUtils.trim

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //No NullPointerException even if null!

      System.out.println("10) Trim String. No NullPointerException >>>"+

          StringUtils.trim(null));

    }

}

 

 

10)Trim String. No NullPointerException >>>null

 

 

StringUtils.trimToEmpty

import org.apache.rumons.lang.StringUtils;

public classMainClass {

    public static void main(String[] args) {

      //If string is null,empty string returned. Else returns trimmed string

      System.out.println("11) Empty String >>>" +

          StringUtils.trimToEmpty(null) + "<<<");

 

    }

}

 

 

11)Empty String >>><<<

 

Google Guava Splitter

分割字符串的两种方式

// Apache StringUtils...

String[] tokens1 =StringUtils.split("one,two,three",',');

 

// Guava splitter...

Iterable<String> tokens2= Splitter.on(',').split("one,two,three");

Splitter更加面向对象,你首先需要创建一个splitter对象,然后使用其做分割,apache则直接通过static方法实现。

然而Splitter具有可重用性,看下面的示例。

Splitter niceCommaSplitter =Splitter.on(',').omitEmptyString().trimResults();

niceCommaSplitter.split("one,,two,  three"); //"one","two","three"

niceCommaSplitter.split(" four  ,  five  "); //"four","five"

更重要的是,splitter的效率更高。

final String numberList ="One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten";

long start =System.currentTimeMillis(); 

for(int i=0; i<1000000;i++) {

    StringUtils.split(numberList, ',');  

}

System.out.println(System.currentTimeMillis()- start);

   

start =System.currentTimeMillis();

for(int i=0; i<1000000;i++) {

    Splitter.on(',').split(numberList);

}

System.out.println(System.currentTimeMillis()- start);

 

在我电脑上返回下面的结果:

594

31

结论:显然,尽量使用splitter.

1 0
原创粉丝点击