Pisahkan String di Java

1. Perkenalan

Memisahkan String adalah operasi yang sangat sering; tutorial singkat ini difokuskan pada beberapa API yang dapat kita gunakan untuk melakukan ini hanya di Java.

2. String.split ()

Mari kita mulai dengan pustaka inti - kelas String itu sendiri menawarkan metode split () - yang sangat nyaman dan cukup untuk sebagian besar skenario. Ini hanya membagi String yang diberikan berdasarkan pembatas, mengembalikan array String .

Mari kita lihat beberapa contoh. Kami akan mulai dengan membaginya dengan koma:

String[] splitted = "peter,james,thomas".split(",");

Mari kita pisahkan dengan spasi:

String[] splitted = "car jeep scooter".split(" ");

Mari kita juga membagi dengan titik:

String[] splitted = "192.168.1.178".split("\\.")

Sekarang mari kita pisahkan dengan beberapa karakter - koma, spasi, dan tanda hubung melalui regex:

String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));

3. StringUtils.split ()

Paket lang umum Apache menyediakan kelas StringUtils - yang berisi metode pemisahan aman-null () , yang membagi menggunakan spasi sebagai pembatas default:

String[] splitted = StringUtils.split("car jeep scooter");

Selain itu, ini mengabaikan spasi ekstra:

String[] splitted = StringUtils.split("car jeep scooter");

4. Splitter.split ()

Terakhir, ada API Splitter fasih yang bagus di Guava juga:

List resultList = Splitter.on(',') .trimResults() .omitEmptyStrings() .splitToList("car,jeep,, scooter"); 

5. Pisahkan dan Potong

Terkadang String tertentu berisi spasi di depan, di belakang, atau ekstra di sekitar pembatas. Mari kita lihat bagaimana kita dapat menangani pemisahan masukan dan pemangkasan hasil sekaligus.

Katakanlah kita memiliki ini sebagai masukan:

String input = " car , jeep, scooter ";

Untuk menghilangkan spasi ekstra sebelum dan / atau setelah pembatas, kita dapat melakukan split dan trim menggunakan regex:

String[] splitted = input.trim().split("\\s*,\\s*");

Di sini, metode trim () menghapus spasi di depan dan di belakang dalam string input, dan regex itu sendiri menangani spasi ekstra di sekitar pembatas.

Kami dapat mencapai hasil yang sama dengan menggunakan fitur Java 8 Stream :

String[] splitted = Arrays.stream(input.split(",")) .map(String::trim) .toArray(String[]::new);

6. Kesimpulan

String.split () umumnya cukup. Namun, untuk kasus yang lebih kompleks, kita dapat menggunakan kelas StringUtils berbasis commons-lang Apache , atau Guava API yang bersih dan fleksibel.

Dan, seperti biasa, kode artikel tersedia di GitHub.