Verkettung von Java Strings

Bei der Verkettung von String-Objekten die den Wert null haben, steht im zusammengesetzten String der Text null. Das ist nicht immer das was man möchte. Mit einem einfachen Trick bekommt man einen Leerstring anstelle von null.

In Java können Strings mit dem +-Operator oder mit dem StringBuilder verkettet werden, wobei zweitere Variante zu bevorzugen ist. Gemäß Java Spezifikation wird der Text null in den zusammengesetzten String geschrieben, wenn das String-Objekt null ist, also keinen Wert hat.

String s1 = "Hallo";
String s2 = null;
String erg = s1 + " " + s2;
System.out.println(erg); // Ergibt 'Hallo null'

Möchte man das Ergebnis ‚Hallo‘ ohne den Text null, geht das mit folgender convenience Methode:

private static final String concatNotNull(String... s) {
   StringBuilder sb = new StringBuilder();
   for (String string : s) {
      sb.append((string == null ? "" : string)).append(" ");
   }
   return sb.toString();
}

Die Methode bekommt eine Liste von Strings übergeben und verkettet diese mit einer Leerstelle als Trennzeichen. Dabei prüft sie auf null und verwendet in diesem Fall einen Leerstring. Das Eingangsbeispiel sieht dann wie folgt aus:

String s1 = "Hallo";
String s2 = null;
String erg = concatNotNull(s1, s2);
System.out.println(erg); // Ergibt 'Hallo '

Anstatt eine eigene convenience Methode zu schreiben ist es natürlich einfacher StringUtils.join aus dem Apache commons lang Projekt zu verwenden. Das Beispiel sieht dann wie folgt aus:

String[] aString = {"Hallo", null};
String erg = StringUtils.join(aString," ");
System.out.println(erg); // Ergibt 'Hallo ';

Ziemlich einfach, wenn man weiss wie 😉

One Reply to “Verkettung von Java Strings”

  1. Pingback: Unterschied von Java und PHP | Informatikunterricht

Schreibe einen Kommentar

Anmelden um einen Kommentar abzugeben.

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*