ホームページ >Java >&#&チュートリアル >Java 8 の「String.split()」は空の文字列を Java 7 とは異なる方法で処理しますか?
Java 8 では、String.split() の動作が以前のバージョンと比較して変更されました。 Java 7. 具体的には、結果の配列の先頭で空の文字列が処理される方法が変更されました。
Java 8 より前では、区切り文字が空の文字列の場合、split() は先頭と末尾に空の文字列を含む配列を生成していました。これらの空の文字列は最終的に削除され、空ではない文字列だけが残りました。
Java 8 では、メカニズムが変更されました。区切り文字が空の文字列の場合、split() は先頭の空の文字列を削除した配列を生成します。ただし、この削除は、入力文字列の先頭のゼロ幅一致にのみ適用されます。
Java 8 の Pattern.split() のドキュメントでは、先頭の部分文字列が空であると明示的に記載されています。入力文字列の先頭に正の幅の一致がある場合にのみ含まれます。先頭の一致がゼロ幅の場合、先頭の空の部分文字列は含まれません。
Java 7 と Java 8 の間のリファレンス実装を調べると、新しい条件が考慮されていることがわかります。以下のコードは、追加されたロジックを示しています。
if (index == 0 && index == m.start() && m.start() == m.end()) { // no empty leading substring included for zero-width match // at the beginning of the input char sequence. continue; }
Java バージョン間で一貫した動作を確保し、Java 8 との互換性を確保するには、次の点を考慮してください。
(?!A) は、一致が発生しないことを確認します。文字列の先頭で、先頭の長さがゼロの一致を効果的に除外します。
以上がJava 8 の「String.split()」は空の文字列を Java 7 とは異なる方法で処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。