Apple Commons StrigUtils

4993 ワード

apphe commons StrigUtils紹介熱4はもう1529回読みました。2012-05-06 21:27タグ:apphe apphe commons StringUtils紹介
org.apache.com mmons.lang.StringUtils
StringUtilsはapache commons langライブラリです。http://commons.apache.org/lang)傘下のツール類は、文字列を処理するための有用な方法をたくさん提供しています。本文では、すべての方法を紹介するつもりはありません。
現在はStringUtilsの2つのバージョンがありますが、それぞれ比較的新しいorg.apphe.com mmons.lang.3.StrigUtilsと古いorg.apphe.com mmons.lang.StringUtilsとでは大きな違いがあります。前者はJAVA 5が必要です。これは私達が使いたいのです。
1)public static book equals(CharSequence str 1、CharSequence str 2)
まず一番簡単な方法equalsから始まります。あなたが考えているのと同じように、彼は二つの文字列パラメータが必要です。同じ時にtrueに戻ります。そうしないとfalseに戻ります。
しかしjava.lang.Stringはすでに既成の比較的に完璧なequals方法があります。なぜ私達は第三者の実現が必要ですか?
この問題はとてもいいです。次のコードを見てみましょう。何か問題がありますか?
Javaコード
public void doStuffWithString(String stringParam) {    
if(stringParam.equals("MyStringValue")) {    
// do stuff }    
}   
ソースコードコピー印刷
public void doStuffWithString(String stringParam) {   
if(stringParam.equals("MyStringValue")) {   
// do stuff }   
}   
これはNull PointerExceptionが現れるかもしれませんが、いくつかの方法があります。
Javaコード
public void safeDoStuffWithString1(String stringParam) {    
if(stringParam != null &&    
stringParam.equals("MyStringValue")) {    
// do stuff    
}    
}     
public void safeDoStuffWithString2(String stringParm) {    
if("MyStringValue".equals(stringParam))    
{    
// do stuff    
}    
}   
ソースコードコピー印刷
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の方法は、空の指針が安全であり、彼に伝達されるパラメータを心配しないでください。
Javaコード
public void safeDoStuffWithString3(String stringParam) {   
if(StringUtils.equals(stringParam,"MyStringValue))    
{    
// do stuff    
}    
}   
ソースコードコピー印刷
public void safeDoStuffWithString3(String stringParam) {  
if(StringUtils.equals(stringParam,"MyStringValue))   
{   
// do stuff   
}   
}   
これは私の好みですが、これは確かに読みやすいです。前の二つの方法は問題がありませんが、StringUtils.equalsは考慮に値すると思います。
2)isEmpty、isNotEmpty、isBlank、isNotBlank
前述のように、これらの方法は、jdkが提供するisEmpty方法に対して、「空のポインタの安全」、つまり、伝達パラメータの空の値を考慮しなくてもよい、例を見てみましょう。
Javaコード
if(myString != null && !myString.isEmpty()) {    
//       ?   
// Do stuff with myString    
}    

if(StringUtils.isNotEmpty(myString)) { //         
// Do stuff with myString    
}   
ソースコードコピー印刷
if(myString != null && !myString.isEmpty()) {   
//       ?  
// Do stuff with myString   
}   

if(StringUtils.isNotEmpty(myString)) { //        
// Do stuff with myString   
}   
Blankとemptyの違い
isBlankは文字列に空白の文字が含まれている場合、trueを返します。例えば、
Javaコード
String someWhiteSpace = " \t 
"; StringUtils.isEmpty(someWhiteSpace); // false StringUtils.isBlank(someWhiteSpace); // true
ソースコードコピー印刷
String someWhiteSpace = " \t 
"; StringUtils.isEmpty(someWhiteSpace); // false StringUtils.isBlank(someWhiteSpace); // true
3)public static String[]split(String str,String separators)はもちろん、この方法はString.splitに対しても空のポインタが安全であり、split 1つのnull文字列を試した場合、Nullに戻ります。一つのNullの区切り記号は空白文字列で区切られますが、もう一つの理由があります。jdkが持参したString.splitは正規表現をサポートして分離するため、思わぬ結果をもたらす可能性があります。例えば、Javaコードです。
public void possiblyNotWhatYouWant() {   
String contrivedExampleString = "one.two.three.four";    
String[] result = contrivedExampleString.split(".");    
System.out.println(result.length); // 0    
}  
ソースコードコピー印刷
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倍速いことも分かりました。
4)public static String jun(Iterable iterable、String separator)この方法は確かに実用的です。jdk自身は提供していないので、簡単な使い方ができます。
Javaコード
String[] numbers = {"one", "two", "three"};   
StringUtils.join(numbers,","); // returns "one,two,three"   
ソースコードコピー印刷
String[] numbers = {"one", "two", "three"};  
StringUtils.join(numbers,","); // returns "one,two,three"   
もちろん、あなたは数字または反復シーケンスを送ることができます。
はい、この倉庫は確かに実用的な倉庫であると確信しています。
APIを参照してくださいhttp://commons.apache.org/lang/api-3.1/org/apache/commons/lang3/StringUtils.html