ホームページ >Java >&#&チュートリアル >Java 文字列の分割: `split(\'.\')` が `ArrayIndexOutOfBoundsException` をスローするのはなぜですか?
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 サイトの他の関連記事を参照してください。