ホームページ >Java >&#&チュートリアル >Java 文字列の分割: `split(\'.\')` が `ArrayIndexOutOfBoundsException` をスローするのはなぜですか?

Java 文字列の分割: `split(\'.\')` が `ArrayIndexOutOfBoundsException` をスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-24 21:12:12883ブラウズ

Java String Splitting: Why Does `split(

Java 文字列を ""." (ドット) で分割

問題:

理由次のコードは、上で分割しようとすると ArrayIndexOutOfBoundsException をスローしますか?ドットですが、スラッシュで分割するときに機能します:

String filename = "D:/some folder/001.docx";
String extensionRemoved = filename.split(".")[0];

対:

String driveLetter = filename.split("/")[0];

解決策:

リテラルのドットで分割するには、ドット文字は、正規表現パターンとして扱われないようにエスケープする必要があります (任意の文字):

String extensionRemoved = filename.split("\.")[0];

正規表現文字列に単一のバックスラッシュを作成するには、二重バックスラッシュ (\) が必要です。

さらに、入力文字列が単なるドットの場合、エッジ ケースが発生します。 (".") ドットで分割すると空の配列になるため、この場合に ArrayIndexOutOfBoundsException が発生しないようにするには、オーバーロードされたメソッドを使用します。末尾の空白の削除を無効にする負の制限を指定した Split(regex, limit) メソッド:

String extensionRemoved = filename.split("\.", -1)[0];

以上がJava 文字列の分割: `split(\'.\')` が `ArrayIndexOutOfBoundsException` をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。