Apabila membaca fail CSV menggunakan kelas Pengimbas Java, adalah penting untuk mengendalikan ruang dengan betul. Isu yang diterangkan di sini, apabila teks dengan ruang dialihkan ke baris seterusnya, timbul daripada kelakuan lalai Pengimbas.
Gelagat Jangkaan:
Fail CSV selalunya mengandungi medan dengan ruang, seperti alamat. Apabila dihuraikan, setiap medan hendaklah ditangkap sebagai satu unit, walaupun ia mengandungi ruang.
Gelagat Sebenar:
Secara lalai, Pengimbas menggunakan ruang putih sebagai pembatas, bermakna ia mentafsirkan ruang sebagai pemisah medan. Akibatnya, mana-mana teks dengan ruang akan dibahagikan kepada beberapa medan dan diletakkan pada baris yang berasingan.
Penyelesaian:
Untuk menyelesaikan isu ini, anda boleh menggunakan kaedah useDelimiter Pengimbas untuk menentukan pembatas yang berbeza. Memandangkan fail CSV biasanya menggunakan koma sebagai pemisah medan, anda boleh menggunakan kod berikut:
<code class="java">Scanner inputStream = new Scanner(file).useDelimiter(",");</code>
Ini akan mengarahkan Pengimbas untuk menganggap koma sebagai pemisah medan, dengan itu mengekalkan integriti medan dengan ruang.
Contoh:
Menggunakan kod yang diperbetulkan ini, data CSV yang disediakan dalam soalan akan dihuraikan seperti berikut:
first,last,email,address 1, address 2 john,smith,[email protected],123 St. Street, Jane,Smith,[email protected],4455 Roger Cir,apt 2
Setiap medan, termasuk yang mempunyai ruang , akan ditangkap sebagai satu unit, menghasilkan output yang diingini.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ruang dengan Betul Apabila Membaca Fail CSV dengan Pengimbas () dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!