Java Nachrichtenformat

David Mbochi Njonge 12 Oktober 2023
  1. Formatieren Sie die Nachricht mit doppelten Anführungszeichen und nutzen Sie MessageFormat
  2. Nachricht mit Unicode-Zeichen formatieren und MessageFormat nutzen
  3. Nachricht mit Escape-Sequenzen formatieren, die MessageFormat nutzen
  4. Nachricht formatieren durch Ersetzen von Zeichen mit Hilfe von MessageFormat
Java Nachrichtenformat

In diesem Tutorial lernen wir, wie man eine Nachricht mit der Java-Klasse MessageFormat formatiert, die von der Java-API bereitgestellt wird. Formatieren ist der Vorgang des dynamischen Einfügens von Zeichen und Zeichenfolgen in eine Nachricht, und das MessageFormat bietet uns diese Funktionalität.

Das MessageFormat verwendet Objektargumente, um eine formatierte Zeichenfolge mit einem Muster zu bilden, das zeigt, wo die Objektargumente eingefügt werden.

Die Objektargumente werden basierend auf der Position, an der sie in den Objektparametern MessageFormat übergeben werden, in das Muster eingefügt. Wir werden die statische format()-Methode von MessageFormat verwenden, um zu lernen, wie man eine Nachricht formatiert.

Der erste Parameter, der an die format()-Methode übergeben wird, ist unser Muster, gefolgt von Objektargumenten, die auf String-Bezeichnern basieren, die wir dynamisch in unseren String einfügen möchten. Beim Einfügen eines Elements in unser Muster verwenden wir möglicherweise bestimmte Zeichen, die vom MessageFormat anders interpretiert werden, was zu einem anderen Ergebnis als erwartet führen kann.

Die Verwendung eines einfachen Anführungszeichens in einer Zeichenfolge wie you're innerhalb einer Nachricht, die mit dem MessageFormat formatiert wird, ergibt beispielsweise die Zeichenfolge youre. Ein einfaches Anführungszeichen wird verwendet, um einen Abschnitt zu kennzeichnen, der nicht formatiert wird, und beachten Sie, dass das verbleibende Muster unserer Nachricht im folgenden Beispiel nicht formatiert ist.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you're turning {1} years old today", name, age);
    System.out.println(message);
  }
}

Ausgabe:

Hello John, youre turning {1} years old today

In den nächsten Abschnitten werden wir vier verschiedene Möglichkeiten behandeln, mit denen wir ein einfaches Anführungszeichen in unsere Nachricht einfügen können, um sicherzustellen, dass unser Muster erfolgreich formatiert wird.

Formatieren Sie die Nachricht mit doppelten Anführungszeichen und nutzen Sie MessageFormat

Um ein einfaches Anführungszeichen in eine Nachricht einzufügen, die mit MessageFormat formatiert wird, sollten wir zwei einfache Anführungszeichen '' anstelle von einfachen Anführungszeichen ' in unserer Zeichenfolge verwenden, wie unten gezeigt.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you''re turning {1} years old today", name, age);
    System.out.println(message);
  }
}

Ausgabe:

Hello John, you're turning 30 years old today

Beachten Sie, dass nach dem Hinzufügen von doppelten Anführungszeichen ein einfaches Anführungszeichen eingefügt wird und das verbleibende Muster mit dem richtigen Wert formatiert wird.

Nachricht mit Unicode-Zeichen formatieren und MessageFormat nutzen

Jedes Zeichen hat eine Unicode-Darstellung. Da Java die Unicode-Zeichen lesen kann, können wir ein einfaches Anführungszeichen in unseren String einfügen, indem wir eine Unicode-Darstellung eines einfachen Anführungszeichens verwenden.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you\u2019re turning {1} years old today", name, age);
    System.out.println(message);
  }
}

Ausgabe:

Hello John, you're turning 30 years old today

Das Unicode-Zeichen \u2019 fügt unserer Zeichenfolge ein einfaches Anführungszeichen hinzu, und das verbleibende Muster unserer Nachricht wird mit dem richtigen Wert formatiert.

Nachricht mit Escape-Sequenzen formatieren, die MessageFormat nutzen

Diese Methode ähnelt der mit doppelten Anführungszeichen, verwendet jedoch eine Escape-Sequenz \, die ein Zeichen mit einem vorangestellten Backslash ist, um eine Zeichenfolge einzufügen. Wir können ein einfaches Anführungszeichen einfügen, indem wir zwei Anführungszeichen-Escape-Sequenzen in unser Muster einfügen, wie unten gezeigt.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message =
        MessageFormat.format("Hello {0}, you\'\'re turning {1} years old today", name, age);
    System.out.println(message);
  }
}

Ausgabe:

Hello John, you're turning 30 years old today

Nachricht formatieren durch Ersetzen von Zeichen mit Hilfe von MessageFormat

Da wir mit Strings arbeiten, können wir unseren String gleich bleiben lassen und mit der Methode replaceAll() das einfache Anführungszeichen durch ein doppeltes Anführungszeichen ersetzen, das schließlich ein einfaches Anführungszeichen in unseren String einfügt.

import java.text.MessageFormat;

public class FormatString {
  public static void main(String[] args) {
    String name = "John";
    long age = 30;
    String message = MessageFormat.format(
        "Hello {0}, you're turning {1} years old today".replaceAll("'", "''"), name, age);
    System.out.println(message);
  }
}

Ausgabe:

Hello John, you're turning 30 years old today
David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub