Java setara dengan Explode and Implode (PHP) [ditutup]

93

Saya baru di Java meskipun memiliki pengalaman yang baik dalam PHP, dan mencari pengganti yang sempurna untuk fungsi explode dan implode (tersedia dalam PHP) di Java.

Saya telah mencari Google untuk hal yang sama tetapi tidak puas dengan hasilnya. Siapapun yang memiliki solusi yang baik untuk masalah saya akan dihargai.

Sebagai contoh:

String s = "x,y,z";
//Here I need a function to divide the string into an array based on a character.
array a = javaExplode(',', s);  //What is javaExplode?
System.out.println(Arrays.toString(a));

Output yang diinginkan:

[x, y, z]
Pankaj Wanjari
sumber
3
Oke, solusi apa yang Anda temukan sejauh ini?
Konstantin Yovkov
7
mengapa pertanyaan ini ditolak? dan di luar topik ?? Harap menyarankan untuk menghindari pertanyaan berikutnya.
Pankaj Wanjari
19
Menurut saya, berdasarkan jumlah penayangan, pertanyaan ini sama sekali tidak buruk. Saya setuju itu adalah pertanyaan yang aneh tetapi banyak dari kita programmer PHP hanya google untuk java meledak dan kemudian mendapatkan ini sebagai jawaban yang benar.
gorgi93
6
Sekarang November 2014, dan saya googled java string meledak, dan pertanyaan ini masih keluar sebagai hasil teratas. Saya pikir status 'ditutup sebagai di luar topik' harus dicabut, karena ini sama sekali tidak keluar topik bagi saya.
Chen Li Yong
3
Februari 2016, pertanyaan ini adalah hasil utama dari "java explode".
tidak ditentukan

Jawaban:

139

The Javadoc untuk String mengungkapkan bahwa String.split()adalah apa yang Anda cari dalam hal explode.

Java tidak menyertakan padanan "implode" dari "join". Daripada menyertakan dependensi eksternal raksasa untuk fungsi sederhana seperti yang disarankan jawaban lain, Anda mungkin hanya ingin menulis beberapa baris kode. Ada sejumlah cara untuk mencapai itu; menggunakan StringBuilderadalah satu:

String foo = "This,that,other";
String[] split = foo.split(",");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++) {
    sb.append(split[i]);
    if (i != split.length - 1) {
        sb.append(" ");
    }
}
String joined = sb.toString();
Brian Roach
sumber
Terima kasih untuk semua jawaban Anda.
Pankaj Wanjari
1
Split memang menggunakan ekspresi reguler (di PHP, Perl, Java, dll.). Jika Anda ingin membagi simbol lain, simbol tersebut perlu di-escape, seperti ini: String [] split = foo.split ("\\ (");
HoldOffHunger
2
Perhatikan bahwa sejak Java 8 kami sebenarnya memiliki String#join( dokumentasi ). Misalnya Anda: String joined = String.join(" ", split);. Metode tersebut menggunakan StringJoinerkelas.
Zabuzard
24

String.split() dapat memberi Anda penggantinya explode()

Untuk penggantian implode()saya akan saran Anda untuk menulis baik fungsi kustom atau penggunaan Apache Commons 's StringUtils.join()fungsi.

Menno
sumber
16

Alternatif yang baik adalah metode String.split dan StringUtils.join.

Meledak:

String[] exploded="Hello World".split(" ");

Implode:

String imploded=StringUtils.join(new String[] {"Hello", "World"}, " ");

Perlu diingat bahwa StringUtils ada di perpustakaan eksternal.

EnKrypt
sumber
1
Di mana Anda menemukan StringUtils? Saya menemukan kelas ini di com.sun.internal dan com.sun.deploy tetapi menurut saya bukan ide yang baik untuk langsung menggunakan kelas di bawah com.sunpackages such as sun., that are outside of the Java platform, can be different across OS platforms (Solaris, Windows, Linux, Macintosh, etc.) and can change at any time without notice with SDK versions
Arnaud Denoyelle
Oke, setelah Anda mengedit, saya melihat bahwa kelas ini berasal dari lib eksternal
Arnaud Denoyelle
... yang merupakan Appache Commons (saya kira): StringUtils
crusy
4

Saya tidak terbiasa dengan PHP, tapi menurut saya String.split adalah Java yang setara dengan PHP explode. Adapun implode, pustaka standar tidak menyediakan fungsionalitas tersebut. Anda hanya mengulang array Anda dan membangun string menggunakan StringBuilder / StringBuffer . Atau Anda dapat mencoba Google Guava Splitter and Joiner yang sangat baik atau split/joinmetode dari Apache Commons StringUtils .

Ivan Sharamet
sumber
1
Semua link valid kecuali Guava, sejak 3 tahun berlalu dan mereka pindah ke GitHub. Saya telah memperbarui komentar dengan tautan baru.
Ivan Sharamet
0

jika Anda berbicara tentang dalam referensi Kelas String. agar bisa Anda gunakan

subString / split

untuk Meledak & menggunakan String

concate

untuk Implode.

Saunik Singh
sumber
1
concatetidak sama dengan implode.
Richard