私はJavaのシリーズを愛する--- [方法]のstring.Split

我々が議論する必要があり今日の分割方法のJavaで、誰もが、長い時間がないを参照してくださいこんにちはこんにちは、おそらくあなたは長い間知られているが、あなたは本当に知っているのですか?

 我々はそれを参照してください。

最も一般的に使用されるスプリット()メソッドではまず外観は、単一のパラメータ方法であり、

パブリック文字列[]スプリット(文字列の正規表現){ 
      戻りスプリット(正規表現、0); 
}

FML、この事が過負荷されていないメソッド呼び出しは、別の方法であるが、また、デフォルト値は、その後、我々はメソッドのオーバーロードを参照してくださいする必要があり、0でした

コードをコピー
パブリック文字列[]スプリット(文字列の正規表現、INT限界){ 
    //はパターンオブジェクトに割り当てることなく、高速分割してみてください
        文字列[]高速= Pattern.fastSplit(正規表現、この限界を)
        (!速い= NULL){もし
            速いリターン。
        } 
        Pattern.compile(正規表現).split(この限界)を返します。
}
コードをコピー

これは、物事の束が、関係なく、このオーバーライドこの方法以来、我々はそれを使用する方法方法の下部に見えるものです

int型の限界?これは何ですか?以下は、説明のAPIであります

回数を制限し、したがって得られた配列の長さに影響するパラメータ制御モード。限界より大きいnが0である場合、モードは最も広くnは - 1回、アレイの長さがnより大きくなくなり、最後の列は、最後のデリミタのマッチングを超えて入力の全てを含むであろう。nは非正である場合、パターンは、何回も適用されると、アレイは、任意の長さであってもよいです。nが0である場合、パターンは、何回も適用される、アレイは、任意の長さであってもよく、ヌルで終了する文字列は破棄されます。

彼らは自分の世界観、自分の聖歌をテストする方法はありませんに住んでいません。

 注:以下のテストテスト文字列の変更に注意してください。

1.デフォルト試験方法、上記のコードを見ることができる、デフォルトの方法は、唯一の制限0のみを通過されます。

のは、(テスト始めましょう、ナンセンス話をしないでください最後のテスト文字列が空になった後、我々はカンマであることをメモして

コードをコピー
文字列str = "1,2,4,5,6,7-、"; 
文字列[] strArr = str.split( "")。
        
(:strArrストリングS){ため
    のSystem.out.println( "分割" + S)。
} 
のSystem.out.println( "数组长度:" + strArr.length)。
コードをコピー

出力:

コードをコピー
スプリット:1 
スプリット:2 
分割:4 
スプリット:5 
分割:6 
セグメンテーション:7 
配列の長さ:6
コードをコピー

テスト結果は:理論部門、そして最後の1、「」空の裏によるともまあセグメント化すべきではありませんが、それはまだ解消されるように、テスト結果の最後のスペースが削除されることがわかりましたか?

                  最後のスペースを分割しないと削除1。

もしそうなら、私はそれを取り除くために後ろに多くのスペースを得ることができますか?

テストへ

コードをコピー
        文字列str =「1,2,4,5,6,7- ,,,」。
        文字列[] strArr = str.split( "")。
        
        (:strArrストリングS){ため
            のSystem.out.println( "分割" + S)。
        } 
        のSystem.out.println( "数组长度:" + strArr.length)。
コードをコピー

出力:

コードをコピー
スプリット:1 
スプリット:2 
分割:4 
スプリット:5 
分割:6 
セグメンテーション:7 
配列の長さ:6
コードをコピー

テスト結果:削除されますどのように多くのスペース、その後に関係なく、それは宇宙の最後の部門であれば制限が0であると思われます

その他の推測:1.中央にスペースが表示されますが、それを取り除くのでしょうか?(例えば:1,2,3、4,5,6,7)

                  2.スペースの出現の始まりは、それを削除しますか?(例:,, 1,2,3,4,5,6,7)

私は、コードを入れないであろう:1スペースの真ん中を取り除くませんが、スペースは分割の配列に文字列として使用されます。

                             2.スペースの始まりは、予約を行うには、削除されません。

結論:最後のスペースの存在のみ制限== 0は、削除された場合、他方は中央前面に除去されないであろう。

2.制限> 0は、試験開始するとき。

コードをコピー
        文字列str =「1,2,4,5,6,7-」。
        文字列[] strArr = str.split( ""、5); 
        
        (:strArrストリングS){ため
            のSystem.out.println( "分割" + S)。
        } 
        のSystem.out.println( "数组长度:" + strArr.length)。
コードをコピー

出力

スプリット:1 
スプリット:2 
分割:4 
スプリット:5 
分割:6,7 
配列の長さ:5

何?「6,7」最終スプリット?ああ地獄?

私たちが満たされた限度の数に等しくない場合、ここで分割数を見て心配しないでください?

この制限は、分割の数に等しいことを確認十分には、単純です

テスト結果:制限は、分割したいコピーの数に等しいです。

その他の推測:1の場合制限>コピー最大の部門に何が起こるか(「1,2,3,4,5,6,7」の最大の部門では、実際には最大部門が7以上であるよりも大きい7、であるなど) ?

                  2.制限が行う方法を小数である場合は?  

結論:それは唯一の部門の最大数に応じてあれば1以上を分割します。

           2.limitが整数である、あなたは小数を使用することはできません

2.リミット<0は、試験開始するとき。

コードをコピー
        文字列str = "1,2,4,5,6,7-、"; 
        文字列[] strArr = str.split( "" - 1)。
        
        (:strArrストリングS){ため
            のSystem.out.println( "分割" + S)。
        } 
        のSystem.out.println( "数组长度:" + strArr.length)。
コードをコピー

 出力:

コードをコピー
スプリット:1 
スプリット:2 
分割:4 
スプリット:5 
分割:6 
セグメンテーション:7 
セグメンテーション:
配列の長さ:7
コードをコピー

 母を見るのは興味深い、と彼は最後のスペースシールドませんでした

子供の背中をオフに購入しないでください

結論:制限が負の場合、それは1として、分割後に任意の文字を削除しないであろうと、-2違いは何ですが、私はまだ理解していません。

転載この記事:https://www.cnblogs.com/woaixingxing/p/10838546.html、未来への恐怖は、それがコピーされ、見つけることができない、とよく書き込み、私は著者にここでのポイントを再び書き込み、及びません。以下のような!

おすすめ

転載: www.cnblogs.com/hujunwei/p/12343989.html