Array to String Penukaran

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan melihat menukar array rentetan atau bilangan bulat menjadi rentetan dan kembali lagi.

Kita dapat mencapainya dengan kelas utiliti Java dan Java vanilla dari perpustakaan yang biasa digunakan.

2. Tukarkan Array ke Rentetan

Kadang-kadang kita perlu menukar pelbagai rentetan atau bilangan bulat menjadi rentetan, tetapi sayangnya, tidak ada kaedah langsung untuk melakukan penukaran ini.

Pelaksanaan lalai kaedah toString () pada array mengembalikan sesuatu seperti Ljava.lang.String; @ 74a10858 yang hanya memberitahu kita tentang jenis objek dan kod hash.

Walau bagaimanapun, kelas utiliti java.util.Arrays menyokong manipulasi array dan rentetan, termasuk kaedah toString () untuk tatasusunan.

Arrays.toString () mengembalikan rentetan dengan kandungan array input. String baru yang dibuat adalah senarai elemen array yang dipisahkan koma, dikelilingi dengan tanda kurung persegi (“[]”):

String[] strArray = { "one", "two", "three" }; String joinedString = Arrays.toString(strArray); assertEquals("[one, two, three]", joinedString);
int[] intArray = { 1,2,3,4,5 }; joinedString = Arrays.toString(intArray); assertEquals("[1, 2, 3, 4, 5]", joinedString);

Dan, walaupun sangat bagus kaedah Arrays.toString (int []) memberi tugas ini kepada kami dengan baik, mari kita bandingkan dengan kaedah berbeza yang boleh kita laksanakan sendiri.

2.1. StringBuilder.append ()

Untuk memulakan, mari kita lihat bagaimana melakukan penukaran ini dengan StringBuilder.append () :

String[] strArray = { "Convert", "Array", "With", "Java" }; StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < strArray.length; i++) { stringBuilder.append(strArray[i]); } String joinedString = stringBuilder.toString(); assertEquals("ConvertArrayWithJava", joinedString);

Selain itu, untuk menukar susunan bilangan bulat, kita dapat menggunakan pendekatan yang sama tetapi memanggil Integer.valueOf (intArray [i]) ketika menambahkan ke StringBuilder kami .

2.2. API Aliran Java

Java 8 ke atas menawarkan kaedah String.join () yang menghasilkan rentetan baru dengan menggabungkan elemen dan memisahkannya dengan pembatas yang ditentukan, dalam kes kami hanya rentetan kosong:

String joinedString = String.join("", new String[]{ "Convert", "With", "Java", "Streams" }); assertEquals("ConvertWithJavaStreams", joinedString);

Selain itu, kita dapat menggunakan kaedah Collectors.joining () dari Java Streams API yang bergabung rentetan dari Stream dalam urutan yang sama dengan array sumbernya:

String joinedString = Arrays .stream(new String[]{ "Convert", "With", "Java", "Streams" }) .collect(Collectors.joining()); assertEquals("ConvertWithJavaStreams", joinedString);

2.3. StringUtils.join ()

Dan Apache Commons Lang tidak akan ketinggalan dari tugas seperti ini.

The StringUtils kelas mempunyai beberapa StringUtils.join () kaedah yang boleh digunakan untuk menukar pelbagai rentetan ke dalam rentetan tunggal:

String joinedString = StringUtils.join(new String[]{ "Convert", "With", "Apache", "Commons" }); assertEquals("ConvertWithApacheCommons", joinedString);

2.4. Joiner.join ()

Dan tidak ketinggalan, Jambu dapat mengakomodasi hal yang sama dengan kelas Joinernya . The Joiner kelas tawaran API fasih dan menyediakan beberapa kaedah penolong untuk menyertai data.

Sebagai contoh, kita boleh menambah pembatas atau melangkau nilai nol:

String joinedString = Joiner.on("") .skipNulls() .join(new String[]{ "Convert", "With", "Guava", null }); assertEquals("ConvertWithGuava", joinedString);

3. Tukarkan String ke Array of Strings

Begitu juga, kita kadang-kadang perlu memisahkan rentetan menjadi larik yang mengandungi beberapa bahagian rentetan input yang dibahagi oleh pembatas yang ditentukan, mari kita lihat bagaimana kita dapat melakukan ini juga.

3.1. String.split ()

Pertama, mari kita mulakan dengan membahagikan ruang kosong menggunakan kaedah String.split () tanpa pembatas:

String[] strArray = "loremipsum".split("");

Yang menghasilkan:

["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]

3.2. StringUtils.split ()

Kedua, mari kita lihat lagi kelas StringUtils dari perpustakaan Apache's Commons Lang.

Di antara banyak kaedah yang tidak selamat pada objek rentetan, kita dapat mencari StringUtils.split (). Secara lalai, ia menganggap pembatas ruang kosong:

String[] splitted = StringUtils.split("lorem ipsum dolor sit amet");

Yang menghasilkan:

["lorem", "ipsum", "dolor", "sit", "amet"]

Tetapi, kami juga boleh menyediakan pembatas jika kami mahu.

3.3. Splitter.split ()

Akhirnya, kita juga boleh menggunakan Jambu Batu dengan API fasihnya Splitter :

List resultList = Splitter.on(' ') .trimResults() .omitEmptyStrings() .splitToList("lorem ipsum dolor sit amet"); String[] strArray = resultList.toArray(new String[0]);

Yang menjana:

["lorem", "ipsum", "dolor", "sit", "amet"]

4. Kesimpulan

Dalam artikel ini, kami menggambarkan cara mengubah array menjadi rentetan dan kembali lagi menggunakan Java inti dan perpustakaan utiliti popular.

Sudah tentu, pelaksanaan semua contoh dan coretan kod ini boleh didapati di GitHub.