Preveďte pole znakov na reťazce v Jave

1. Prehľad

V tomto rýchlom výučbe sa budeme venovať rôznym spôsobom, ako previesť pole znakov na a String v Jave.

2. Sláčikový konštruktor

The String trieda má a konštruktér, ktorý akceptuje a char pole ako argument:

@Test public void whenStringConstructor_thenOK () {final char [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Reťazcový reťazec = nový Reťazec (charArray); assertThat (retazec, je ("baeldung")); }

Toto je jeden z najjednoduchších spôsobov prevodu a char pole do a String. Vnútorne sa dovoláva Reťazec # valueOf vytvoriť String objekt.

3. String.valueOf ()

A keď už hovoríme o hodnota(), môžeme ho dokonca použiť priamo:

@Test public void whenStringValueOf_thenOK () {final char [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Reťazcový reťazec = String.valueOf (charArray); assertThat (retazec, je ("baeldung")); }

Reťazec # copyValueOf je ďalšia metóda, ktorá je sémanticky ekvivalentná s hodnota() Táto metóda však mala význam iba v niekoľkých prvých vydaniach Java. Od dnešného dňa, the copyValueOf () metóda je nadbytočná a neodporúčame ju používať.

4. StringBuilder‘S natiahnuť()

Čo ak chceme založiť a String z poľa char polia?

Potom môžeme najskôr vytvoriť inštanciu a StringBuilder inštancie a použiť jeho pridať (char []) metóda na pripojenie všetkého obsahu.

Neskôr použijeme natiahnuť() metóda na získanie jeho String zastúpenie:

@Test public void whenStringBuilder_thenOK () {final char [] [] arrayOfCharArray = {{'b', 'a'}, {'e', 'l', 'd', 'u'}, {'n', 'g'}}; StringBuilder sb = nový StringBuilder (); pre (char [] subArray: arrayOfCharArray) {sb.append (subArray); } assertThat (sb.toString (), je ("baeldung")); }

Vyššie uvedený kód môžeme ďalej optimalizovať vytvorením inštancie StringBuilder presnej dĺžky, ktorú potrebujeme.

5. Prúdy Java 8

S Arrays.stream (objekt T []) metódou môžeme otvoriť prúd cez pole typu T.

Vzhľadom na to, že máme a Postava pole, môžeme použiť Collectors.joining () operácia na vytvorenie a String inštancia:

@Test public void whenStreamCollectors_thenOK () {final Character [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Stream charStream = Arrays.stream (charArray); Reťazcový reťazec = charStream.map (String :: valueOf) .collect (Collectors.joining ()); assertThat (retazec, je ("baeldung")); }

Výhradou tohto prístupu je, že sa dovolávame: hodnota() nad každým Postava živel a tak to bude dosť pomalé.

6. Spoločná základňa Guava Stolár

Povedzme však, že reťazec, ktorý musíme vytvoriť, je reťazec s oddeľovačmi. Guava nám poskytuje užitočnú metódu:

@Test public void whenGuavaCommonBaseJoiners_thenOK () {final Character [] charArray = {'b', 'a', 'e', ​​'l', 'd', 'u', 'n', 'g'}; Reťazcový reťazec = Joiner.on ("|"). Join (charArray); assertThat (reťazec, je ("b | a | e | l | d | u | n | g")); }

Opäť si všimnite, že the pripojiť sa () metóda bude akceptovať iba a Postava pole a nie primitiv char pole.

7. Záver

V tomto tutoriáli sme preskúmali spôsoby prevodu daného znakového poľa na jeho String zastúpenie v Jave.

Ako obvykle nájdete všetky príklady kódov na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found