Di Java, kaedah split() digunakan untuk membahagikan rentetan kepada subrentetan berdasarkan pembatas yang ditentukan. Walau bagaimanapun, apabila cuba memisahkan rentetan pada aksara titik literal '.', ArrayIndexOutOfBoundsException mungkin dilemparkan.
Untuk menggambarkan isu ini, pertimbangkan kod berikut:
String filename = "D:/some folder/001.docx"; String extensionRemoved = filename.split(".")[0];
Dalam kod di atas, niatnya adalah untuk mengalih keluar sambungan fail dengan membelah nama fail pada titik. Walau bagaimanapun, pelaksanaan kod ini akan menghasilkan pengecualian.
Sebaliknya, kod berikut berfungsi dengan betul:
String driveLetter = filename.split("/")[0];
Ini disebabkan oleh fakta bahawa kaedah split() mentafsir '.' sebagai aksara kad bebas, yang sepadan dengan mana-mana aksara dalam rentetan. Untuk membelah pada titik tersurat, adalah perlu untuk melepaskannya menggunakan garis serong ke belakang:
String extensionRemoved = filename.split("\.")[0];
Dengan melarikan diri dari titik, kami menunjukkan bahawa kami mahu membelah pada aksara literal, bukan kad bebas. Adalah penting untuk ambil perhatian bahawa watak sengkang terbalik itu sendiri ialah watak istimewa dalam regex, jadi ia juga perlu dilepaskan menggunakan sengkang terbalik yang lain.
Selain itu, apabila membelah pada titik, adalah penting untuk mengambil kira kes tepi di mana nama fail kosong atau hanya terdiri daripada titik. Jika anda cuba memisahkan rentetan sedemikian tanpa menggunakan parameter had kaedah split(), anda mungkin menghadapi ArrayIndexOutOfBoundsException. Untuk mengelakkan ini, gunakan nilai negatif untuk parameter had:
String extensionRemoved = filename.split("\.", -1)[0];
Dengan menetapkan had kepada nilai negatif, anda melumpuhkan penyingkiran tempat kosong mengekor daripada tatasusunan yang terhasil, memastikan anda sentiasa mendapat nilai yang sah indeks walaupun untuk rentetan kosong atau satu aksara.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Java Menggunakan Titik (.) sebagai Pembatas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!