2010-05-11 9 views

risposta

15

String.format è solo una scorciatoia per Formatter, questo è un formattatore "printf-style". Dall'altra parte, MessageFormat utilizza una convenzione di formattazione diversa, come descritto nella documentazione collegata.

Utilizzare la prima "per il layout giustificazione e allineamento, formati comuni per numerico, stringa e data/dati di tempo, e l'uscita specifica locale" e il secondo "per produrre messaggi concatenati in modo indipendente dalla lingua".

50

Put semplicemente, la differenza principale è nella stringa di formato:

  1. MessageFormat.format() stringa di formato accetta posizioni argomento (es {0}, {1}.). Esempio:

    "This is year {0}!"

    Lo sviluppatore non deve preoccuparsi di tipi di argomenti, perché sono, il più delle volte, riconosciuto e formattato in base alle attuali Locale.

  2. String.format() formato stringa accetta argomenti tipo di argomento (ad esempio %d per i numeri, %s per le stringhe). Esempio:

    "This is year %d!"

    String.format() in generale ti dà molto più controllo su come viene visualizzato l'argomento grazie a molte opzioni che è possibile specificare con l'indicatore di tipo. Ad esempio, la stringa di formato "%-6.2f" specifica di visualizzare un numero in virgola mobile allineato a sinistra con min. larghezza 6 caratteri e precisione di 2 posizioni decimali.

Basta dare un'occhiata a javadoc di entrambi i metodi per scoprire ulteriori dettagli.

+0

grazie mille :) – gokareless

+1

Hai un certo controllo sulla formattazione in MessageFormat.format, ad esempio: "{0, numero, intero}". –