Pisahkan Rentetan di Jawa

1. Pengenalan

Membelah Strings adalah operasi yang sangat kerap; tutorial cepat ini difokuskan pada beberapa API yang dapat kita gunakan untuk melakukannya hanya di Java.

2. String.split ()

Mari kita mulakan dengan perpustakaan teras - kelas String sendiri menawarkan kaedah split () - yang sangat mudah dan mencukupi untuk kebanyakan senario. Ia hanya berpecah yang diberikan String berdasarkan pembatas, kembali pelbagai Strings .

Mari kita lihat beberapa contoh. Kita akan mulakan dengan membelah koma:

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

Mari berpisah dengan ruang kosong:

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

Mari juga dipisahkan dengan titik:

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

Sekarang mari kita dibahagi dengan beberapa watak - koma, spasi dan tanda hubung melalui regex:

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

3. StringUtils.split ()

Pakej lang umum Apache menyediakan kelas StringUtils - yang mengandungi kaedah split () null-safe , yang berpisah menggunakan ruang kosong sebagai pembatas lalai:

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

Selanjutnya, ia mengabaikan ruang tambahan:

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

4. Splitter.split ()

Akhirnya, terdapat API Splitter fasih yang bagus di Jambu Batu juga:

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

5. Pecah dan Potong

Kadang-kadang String yang diberikan mengandungi beberapa ruang utama, belakang, atau tambahan di sekitar pembatas. Mari lihat bagaimana kita dapat menangani pemisahan input dan memangkas hasilnya dalam satu masa.

Katakan kita mempunyai ini sebagai input:

String input = " car , jeep, scooter ";

Untuk membuang ruang tambahan sebelum dan / atau setelah pembatas, kita dapat melakukan pemisahan dan pemangkasan menggunakan regex:

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

Di sini, kaedah trim () menghilangkan ruang depan dan belakang dalam rentetan input, dan regex itu sendiri menangani ruang tambahan di sekitar pembatas.

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

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

6. Kesimpulannya

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

Dan, seperti biasa, kod artikel tersebut terdapat di GitHub.