Tömb karakterlánc konverziók
1. Áttekintés
Ebben a rövid oktatóanyagban a stringek vagy egészek tömbjének karakterláncokká alakítását és visszaállítását fogjuk megvizsgálni.
Ezt a gyakran használt könyvtárakból származó vanília Java és Java segédprogramokkal érhetjük el.
2. Konvertálja a tömböt karakterláncra
Néha egy sor karakterláncot vagy egészet kell stringekké konvertálnunk, de sajnos nincs közvetlen módszer ennek az átalakításnak a végrehajtására.
A. Alapértelmezett megvalósítása toString () metódus egy tömbön hasonlót ad vissza Ljava.lang.String; @ 74a10858 amely csak az objektum típusáról és kivonatkódjáról tájékoztat bennünket.
Azonban a java.util.A Arrays a hasznossági osztály támogatja a tömb és karakterlánc manipulációt, beleértve a toString () módszer a tömbökhöz.
Arrays.toString () karakterláncot ad vissza a bemeneti tömb tartalmával. A létrehozott új karakterlánc vesszővel elválasztott lista a tömb elemeiről, szögletes zárójelekkel („[]”) körülvéve:
Karakterlánc [] strArray = {"egy", "kettő", "három"}; String joinString = Tömbök.toString (strArray); assertEquals ("[egy, kettő, három]", csatlakozott a Stringhez);
int [] intArray = {1,2,3,4,5}; joinString = Tömbök.toString (intArray); assertEquals ("[1, 2, 3, 4, 5]", csatlakozott a Stringhez);
És bár nagyszerű, hogy a Arrays.toString (int []) metódus olyan szépen begombolja ezt a feladatot számunkra, hasonlítsuk össze azokat a különböző módszerekkel, amelyeket egyedül is megvalósíthatunk.
2.1. StringBuilder.append ()
Először nézzük meg, hogyan lehet ezt az átalakítást végrehajtani StringBuilder.append ():
Karakterlánc [] strArray = {"Konvertálás", "Tömb", "With", "Java"}; StringBuilder stringBuilder = new StringBuilder (); for (int i = 0; i <strArray.length; i ++) {stringBuilder.append (strArray [i]); } Karakterlánc csatlakozottString = stringBuilder.toString (); assertEquals ("ConvertArrayWithJava", joinString);
Ezenkívül egész számok tömbjének átalakításához ugyanazt a megközelítést használhatjuk, de ehelyett hívhatunk Integer.valueOf (intArray [i]) amikor csatlakozik a mi StringBuilder.
2.2. Java Streams API
A Java 8 és újabb verziók kínálják a String.join () módszer, amely új sztringet állít elő az elemek összekapcsolásával és elválasztásával a megadott elválasztóval, esetünkben csak üres karakterlánccal:
String joinString = String.join ("", új String [] {"Convert", "With", "Java", "Stream"}); assertEquals ("ConvertWithJavaStreams", joinString);
Ezenkívül használhatjuk a Collectors.joining () metódust a Java Streams API-ból, amely összekapcsolja a Folyam ugyanabban a sorrendben, mint a forrás tömb:
String joinString = Tömbök .stream (új karakterlánc [] {"Convert", "With", "Java", "Streams"}) .collect (Collectors.joining ()); assertEquals ("ConvertWithJavaStreams", joinString);
2.3. StringUtils.join ()
Az Apache Commons Lang pedig soha nem maradhat ki az ilyen feladatokból.
A StringUtils osztályban több van StringUtils.join () metódusok, amelyek felhasználásával a karakterláncok tömbjét egyetlen stringre változtathatja:
String joinString = StringUtils.join (új String [] {"Convert", "With", "Apache", "Commons"}); assertEquals ("ConvertWithApacheCommons", joinString);
2.4. Joiner.join ()
És hogy ne legyőzzem, Gujávafa ugyanezt befogadja annak Asztalos osztály. A Asztalos osztály folyékony API-t kínál, és egy maroknyi segítő módszert kínál az adatok összekapcsolására.
Például felvehetünk egy elválasztót vagy kihagyhatunk null értékeket:
Karakterlánc csatlakozottString = Joiner.on ("") .skipNulls () .join (új karakterlánc [] {"Konvertálás", "With", "Guava", null}); assertEquals ("ConvertWithGuava", joinString);
3. Konvertálja a karakterláncot stringek tömbjévé
Hasonlóképpen, néha meg kell osztanunk egy karakterláncot tömbre, amely a bemeneti karakterláncok részhalmazát tartalmazza a megadott elválasztóval elválasztva, nézzük meg, hogyan is tudjuk ezt megtenni.
3.1. String.split ()
Először is kezdjük azzal, hogy osszuk el a szóközöket a String.split () módszer elválasztó nélkül:
Karakterlánc [] strArray = "loremipsum" .split ("");
Ami előállítja:
["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]
3.2. StringUtils.split ()
Másodszor nézzük meg újra a StringUtils osztály az Apache Commons Lang könyvtárából.
A string objektumokon található számos null-safe módszer között megtalálhatjuk StringUtils.split (). Alapértelmezés szerint egy szóköz elválasztót feltételez:
String [] split = StringUtils.split ("lorem ipsum dolor sit amet");
Ennek eredményeként:
["Lorem ipsum dolor sit amet"]
De, ha akarunk, megadhatunk határolót is.
3.3. Splitter.split ()
Végül használhatjuk is Gujávafa azzal Hasító folyékony API:
List resultList = Splitter.on ('') .trimResults () .omitEmptyStrings () .splitToList ("lorem ipsum dolor sit amet"); Karakterlánc [] strArray = resultList.toArray (új String [0]);
Ami generálja:
["Lorem ipsum dolor sit amet"]
4. Következtetés
Ebben a cikkben bemutattuk, hogyan lehet egy tömböt stringgé és vissza konvertálni a Java és a népszerű segédkönyvtárak segítségével.
Természetesen ezeknek a példáknak és kódrészleteknek a megvalósítása megtalálható a GitHubon.