Conversies van matrix naar tekenreeks

1. Overzicht

In deze korte tutorial gaan we kijken naar het converteren van een reeks strings of gehele getallen naar een string en weer terug.

We kunnen dit bereiken met vanille Java- en Java-hulpprogramma-klassen uit veelgebruikte bibliotheken.

2. Converteer Array naar String

Soms moeten we een reeks strings of gehele getallen omzetten in een string, maar helaas is er geen directe methode om deze conversie uit te voeren.

De standaardimplementatie van het toString () methode op een array retourneert iets als Ljava.lang.String; @ 74a10858 die ons alleen informeert over het type en de hash-code van het object.

echter, de java.util.Arrays utility class ondersteunt array- en stringmanipulatie, inclusief een toString () methode voor arrays.

Arrays.toString () geeft een tekenreeks terug met de inhoud van de invoerarray. De nieuwe tekenreeks die wordt gemaakt, is een door komma's gescheiden lijst van de elementen van de array, omgeven door vierkante haken ("[]"):

String [] strArray = {"een", "twee", "drie"}; String joinString = Arrays.toString (strArray); assertEquals ("[een, twee, drie]", joinString);
int [] intArray = {1,2,3,4,5}; joinString = Arrays.toString (intArray); assertEquals ("[1, 2, 3, 4, 5]", joinString);

En hoewel het geweldig is dat de Arrays.toString (int []) method dicht voor ons deze taak zo mooi, laten we het vergelijken met verschillende methoden die we zelf kunnen implementeren.

2.1. StringBuilder.append ()

Laten we om te beginnen eens kijken hoe u deze conversie kunt uitvoeren met StringBuilder.append ():

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

Om een ​​reeks gehele getallen te converteren, kunnen we bovendien dezelfde benadering gebruiken, maar in plaats daarvan bellen Integer.valueOf (intArray [i]) bij het toevoegen aan onze StringBuilder.

2.2. Java Streams API

Java 8 en hoger biedt de String.join () methode die een nieuwe string produceert door elementen samen te voegen en ze te scheiden met het opgegeven scheidingsteken, in ons geval gewoon een lege string:

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

Bovendien kunnen we de Collectors.joining () methode van de Java Streams API die tekenreeksen samenvoegt vanuit de Stroom in dezelfde volgorde als de bronarray:

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

2.3. StringUtils.join ()

En Apache Commons Lang mag nooit ontbreken bij dit soort taken.

De StringUtils klasse heeft er meerdere StringUtils.join () methoden die kunnen worden gebruikt om een ​​reeks strings in een enkele string te veranderen:

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

2.4. Joiner.join ()

En niet achter te blijven, Guave herbergt hetzelfde met zijn Schrijnwerker klasse. De Schrijnwerker class biedt een vloeiende API en biedt een handvol hulpmethoden om gegevens samen te voegen.

We kunnen bijvoorbeeld een scheidingsteken toevoegen of null-waarden overslaan:

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

3. Converteer String naar Array of Strings

Evenzo moeten we soms een string opsplitsen in een array die een subset van invoertekenreeksen bevat, gesplitst door het opgegeven scheidingsteken, laten we eens kijken hoe we dit ook kunnen doen.

3.1. String.split ()

Laten we eerst beginnen met het splitsen van de witruimte met behulp van de String.split () methode zonder scheidingsteken:

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

Welke produceert:

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

3.2. StringUtils.split ()

Ten tweede, laten we nogmaals kijken naar het StringUtils klasse uit de Commons Lang-bibliotheek van Apache.

Onder de vele nul-veilige methoden voor string-objecten, kunnen we vinden StringUtils.split (). Standaard gaat het uit van een witruimtescheidingsteken:

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

Wat resulteert in:

["Lorem ipsum dolor sit amet"]

Maar we kunnen ook een scheidingsteken opgeven als we dat willen.

3.3. Splitter.split ()

Ten slotte kunnen we ook gebruik maken van Guave met zijn Splitser vloeiende API:

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

Die genereert:

["Lorem ipsum dolor sit amet"]

4. Conclusie

In dit artikel hebben we geïllustreerd hoe u een array naar een string kunt converteren en weer terug met behulp van kern-Java en populaire hulpprogramma-bibliotheken.

Natuurlijk is de implementatie van al deze voorbeelden en codefragmenten te vinden op GitHub.