String Templates mit Java (Tausend Wege führen nach Rom)

Um lange Zeichenketten (Strings) mit Werten zu füllen, bietet sich das Java MessageFormat an:

1
2
3
4
5
6
7
8
9
10
11
12
  public static void main(String[] args) throws Exception
  {
    String template = "My name is {0} {1}."
            + System.getProperty("line.separator", "\r\n")
            + "I am {2} years old.";
    Object[] values = new Object[]
    {
      "Benny", "Neugebauer", 24
    };
    String sentence = MessageFormat.format(template, values);
    System.out.println(sentence);
  }

Die Ausgabe wäre hierfür:

My name is Benny Neugebauer.
I am 24 years old.

Möglich wäre auch dieser Einzeiler:

String sentence = String.format("My Name is %s %s.%sI am %d yars old.", "Benny", "Neugebauer",  System.getProperty("line.separator"), 24);

Man könnte ebenso String Templates verwenden, müsste dann aber Bibliotheken wie etwa ANTLR (Five minute Introduction in ANTLR String Templates) verwenden. Natürlich kann man Strings auch verketten (konkatenieren), was aber wenig übersichtlich ist:

1
2
3
4
5
6
7
8
9
10
    String sentence = "My Name is "
            +"Benny"
            +" "
            +"Neugebauer"
            +"."
            +System.getProperty("line.separator")
            +"I am "
            +24
            +" years old.";
    System.out.println(sentence);

Hinsichtlich der Performanz, sind String Builder besser geeignet als die Konkatenation von Zeichenketten:

1
2
3
4
    StringBuilder sb = new StringBuilder("My name is ").append("Benny ");
    sb.append("Neugebauer").append(".").append(System.getProperty("line.separator"));
    sb.append("I am").append(24).append(" years old.");
    System.out.println(sb.toString());

Wie man an diesen kurzen Beispielen sieht gibt es viele Möglichkeiten, die zum Ergebnis führen. Mir gefällt derzeit das Message Format am besten. Das Message Format ist für den Standard Java-Logger (java.util.logging.Logger) sogar das von NetBeans 7 bevorzugte Format für Log-Nachrichten.

Datei zeilenweise auslesen mit Java

Zum Auslesen einer Datei braucht man in Java viele Helferlein. Streams, Reader und Builder spielen dabei die Hauptrollen. Um etwas Licht in den Dschungel zu bringen, habe ich eine einfache Java-Anwendung geschrieben, die eine Datei zeilenweise auslesen kann und dann auf der Konsole ausgibt.
Datei zeilenweise auslesen mit Java weiterlesen