Pendahuluan

split merupakan fungsi di class java.lang.String yang berguna untuk membuat sebuah Array Of String dari sebuah String awal yang dipisahkan oleh tanda pemisah tertentu atau panjang tertentu.

Kenapa perlu ?

Di dalam aplikasi, seringkali kita mengirimkan/menyimpan data dalam bentuk sebuah String yang merupakan kumpulan informasi. yang dipisahkan oleh tanda pemisah tertentu atau panjang tertentu.

Misalnya :

  • Tanggal, dalam bentuk DD-MM-YYYY (Tanggal-Bulan-Tahun), misalnya 07-07-2021, dipisahkan oleh tanda -.

  • Waktu, dalam bentuk HH:mm:SS.sss (Jam:Menit:Detik.milidetik), misalnya 19:06:56.974, dipisahkan oleh tanda :.

  • NIK / KTP, yang terdiri dari 16 angka, yang terdiri dari kode wilayah provinsi, kabupaten/kota, dan kecamatan, dan tanggal lahir.. Tidak dipisahkan oleh tanda pemisah, tapi dipisahkan oleh panjang karakter.

  • Nomor Karyawan, yang bisa berbeda-beda tergantung perusahaan. Bisa terdiri dari kode cabang, divisi, dan urutan masuk.

  • Identifikasi data, misalnya untuk identifikasi pembelian produk berdasarkan tanggal dan urutannya, misalnya : ELEC-20210616_065, dipisahkan oleh tanda - dan tanda _.

  • Penomoran surat formal, misalnya di instansi-instansi pemerintahan ataupun swasta, pasti akan mempunyai penomoran yang dituliskan dalam bentuk satu String lengkap, misalnya INT-001/HR/Rule-001, dll, dipisahkan oleh tanda /.

  • Masih banyak contoh lainnya.


Data-data diatas tentunya berguna untuk identifikasi informasi secara cepat.

Sekali lihat informasi 07-07-2021, orang akan bisa mendapatkan informasi Tanggal, Bulan, dan Tahun sekaligus.

Akan tetapi ada kalanya kita butuh salah satu bagian informasinya itu saja, contohnya untuk Agregasi, atau untuk Filter

Misalnya ketika kita butuh data tahunnya saja dari sekolompok data seperti diatas, tentunya kita bisa melakukan parsing terhadap data tersebut dan melakukan extract data-data apa saja yang kita inginkan.

Bagaimana caranya ?


Di bahasa pemrograman Java, ada fungsi split yang merupakan fungsi bawaan dari java.lang.String yang langsung bisa digunakan untuk parsing dan extract data dari String yang digunakan.

Contoh :

1import java.util.stream.Stream;
2
3public static void main(String[] args) {
4    String tanggal= "07-12-2021";
5    String[] komponenTanggal = tanggal.split("-");
6
7    Stream.of(komponenTanggal).forEach(System.out::println);
8}

Nilai tanggal "07-12-2021" bisa dipisah dengan menggunakan fungsi String.split(), sehingga akan menghasilkan objek baru dalam bentuk Array of String komponenTanggal.

Untuk kasus diatas, kita memanggil fungsi tanggal.split("-");

Thats too easy..


Tapi ada beberapa hal yang mesti diperhatikan dalam penggunaan fungsi ini :


1. Fungsi split() ini membutuhkan parameter String juga dalam bentuk karakter Regular Expression

Oleh karena parameternya dalam bentuk Regular Expression, maka karakter-karakter yang juga digunakan sebagai karakter khusus Regular Expression harus diperhatikan dengan seksama.

Misalkan untuk String : 07.12.2021 yang merupakan Tanggal, Bulan, dan Tahun dengan pemisah tanda titik.

Kalau kita menggunakan fungsi tanggal.split(".");, maka kita akan mendapatkan list kosong.

Hal ini karena karakter . di Regular Expression merupakan karakter khusus.

Oleh karenanya untuk kasus diatas, kita harus melakukan escape karakter tersebut, sehingga code nya menjadi tanggal.split("\.");


2. Fungsi split() ini menghasilkan Array of String, bukan Stream

Dengan penggunaan fungsi Stream di Java, maka kita bisa melakukan pemrosesan collection secara lebih deklaratif.

Fungsi split() ini menghasilkan Array Of String yang tidak bisa dilakukan proses Stream terhadapnya layaknya Collection yang lain.

Akibatnya kita perlu melakukan pemrosesan secara prosedural/tradisional, atau mengubahnya dahulu jadi Stream, lalu diproses.

Misalnya di code diatas, kita ubah menjadi stream dengan cara :

  • Stream.of(komponenTanggal).forEach(System.out::println);