Formattazione delle stringhe Java

Formattazione delle stringhe Java
La formattazione di una stringa, consente di inserire altri caratteri, sotto-corde o valori numerici, in una stringa principale, in un modo particolare. Considera il codice: String Str = String.formato ("Esistono %s, %s, %s e %s."," arancione "," banana "," pera "," limone ");
Sistema.fuori.println (str);

L'output è:

C'è arancione, banana, pera e limone.

Ci sono cinque argomenti in questo metodo statico in formato () della classe stringa. Il primo argomento è la principale stringa di interesse, il cui contenuto ha quattro segnaposto, ognuno dei quali è %s. Insieme, il resto degli argomenti è indicato come un elenco di argomenti. Tutto ciò che è uguale, il primo argomento nell'elenco degli argomenti corrisponde al primo segnaposto nella stringa principale (da sinistra). Il secondo argomento nell'elenco corrisponde al secondo segnaposto nella stringa principale. Il terzo argomento nell'elenco degli argomenti corrisponde al terzo segnaposto nella stringa principale e così via. All'output, i segnaposto vengono sostituiti dai loro argomenti corrispondenti in modo predeterminato dall'elenco degli argomenti.

Cinque argomenti sono considerati qui. Il primo non fa parte dell'elenco degli argomenti considerati. In realtà è chiamata stringa di formato, anche se deve ancora essere formattata. È sempre una stringa. Il resto degli argomenti, formando l'elenco degli argomenti, può essere di diversi tipi, non necessariamente, stringhe. Nota: un segnaposto qui si chiama specificatore del formato.

Tutti gli argomenti sopra, possono essere sostituiti con variabili, come mostra il seguente segmento di codice:

Stringa a = "arancione", b = "banana", c = "pera", d = "limone";
String fmtstr = "Ci sono %s, %s, %s e %s.";
Stringa str = stringa.formato (fmtstr, a, b, c, d);
Sistema.fuori.println (str);

Questo articolo spiega le basi della formattazione di una stringa in Java usando gli specificatori del formato.

Sintassi del formato specificatore

La sintassi per lo specificatore del formato è:

%[argomento_index $] [flags] [larghezza] [.precisione] conversione

Deve iniziare con il segno percentuale, %. Deve finire con un personaggio chiamato conversione. Nel codice sopra, ogni specificatore è costituito da % e "s". 's' è la conversione. 's' sta per la stringa. Il resto dei parametri, indicati tra parentesi quadrate nella sintassi, sono opzionali e sono spiegati di seguito.

argomento_index $
argomento_index è un numero intero decimale. Inizia da 1. Può essere 1 $, 2 $, 3 $, ecc. Le normali corrispondenze per gli specificatori e gli argomenti nell'elenco degli argomenti sono le seguenti: il primo specificatore a sinistra, nella stringa di formato, corrisponde al primo argomento nell'elenco degli argomenti (da sinistra); Il secondo specificatore da sinistra, nella stringa di formato, corrisponde al secondo argomento nell'elenco degli argomenti; Il terzo specificatore da sinistra, nella stringa di formato, corrisponde al terzo argomento nell'elenco degli argomenti; e così via. argomento_index può essere usato per modificare questo ordine. Il seguente segmento di codice inverte l'ordine:

Stringa str = stringa.formato ("Qui: %4 $ c, %3 $ c, %2 $ c e %1 $ c", '1', '2', '3', '4');
Sistema.fuori.println (str);

L'output è:

Qui: 4, 3, 2 e 1

'c' in un specificatore corrisponde a un carattere nell'elenco degli argomenti. L'ordine normale è 1 $, 2 $, 3 $, 4 $. Poiché questo ordine è stato invertito nella stringa di formato, quindi l'output è uscito in ordine inverso.

Conversione

La conversione in formattazione delle stringhe è un carattere speciale. Ogni specificatore del formato, con la sua conversione, corrisponde a un argomento nell'elenco degli argomenti. Una conversione è un personaggio. La tabella seguente fornisce conversioni e loro significati:

Personaggi di conversione e loro significati
Conversione Senso
B Per formattare un argomento che è booleano
C Per formattare un argomento che è un personaggio Unicode
S Per formattare un argomento che è una stringa
D Per formattare un argomento che è un intero decimale
F Per formattare un argomento che è un numero con un punto decimale
% Per la stampa solo % per l'argomento, ' %'
N Per causare il resto del testo a destra, andare sulla riga successiva all'uscita

L'uso di "s" e "c" è stato illustrato sopra. Il resto dei meta-carattere di conversione sarà illustrato in questa sezione.

Il carattere di conversione B
Il seguente segmento di codice mostra come un specificatore di formato per un bool viene sostituito dal valore booleano del suo argomento corrispondente:

Stringa str = stringa.formato ("È %b che ha superato.", VERO);
Sistema.fuori.println (str);

L'output è:

È vero che è passato.

Si noti che l'argomento, vero, non è nelle citazioni.

Il carattere di conversione D
Il seguente segmento di codice mostra come un specificatore di formato per un numero intero decimale viene sostituito dal valore del suo argomento corrispondente:

Stringa str = stringa.formato ("Ho %d penne.", 5);
Sistema.fuori.println (str);

L'output è:

Ho 5 penne.

Si noti che l'argomento, 5, non è tra le citazioni perché non è un personaggio.

Il carattere di conversione F
Il seguente segmento di codice mostra come un specificatore di formato per un numero con un punto decimale, viene sostituito dal valore dell'argomento corrispondente:

Stringa str = stringa.formato ("%f è una frazione impropria.", 2.5);
Sistema.fuori.println (str);

Innanzitutto, si noti che l'argomento, 2.5, non è tra le citazioni perché non è una stringa. L'output è:

2.500000 è una frazione impropria.

2.5 è stato formattato su 2.500000, la formattazione predefinita. Può essere limitato a 2.5 come dato - vedi sotto.

Il carattere di conversione %
Poiché il simbolo percentuale viene utilizzato per identificare lo specificatore del formato, uno schema deve essere sviluppato per avere il simbolo % come carattere normale nella stringa di formato. Lo schema è semplice: avere % come argomento di personaggio nell'elenco degli argomenti. Quindi utilizzare il carattere di conversione % nella posizione nella stringa di formato, in cui dovrebbe apparire il simbolo percentuale. Il seguente segmento di codice illustra questo:

Stringa str = stringa.formato ("È al 100 %%.", '%');
Sistema.fuori.println (str);

L'output è:

È al 100%.

L'impeditore del formato è %%. Il primo %della coppia, %%, è ciò che identifica lo specificatore. Il secondo % è il carattere di conversione. Come argomento, % è in singoli citazioni.

Il carattere di conversione n
Per causare il resto del testo a destra della stringa di formato che va sulla riga successiva all'uscita, usa n. n è un carattere di conversione da utilizzare in un specificatore di formato. Illustrazione:

Stringa str = stringa.Formato ("Prima frase.%NSECOND Frase.",'\N');
Sistema.fuori.println (str);

L'output è:

Prima frase.
Seconda frase.

IL .Parametro di precisione del formato specificatore

Questo parametro indica il numero di luoghi decimali per un numero con luoghi decimali. È un numero intero preceduto dal punto. Come notato sopra, il numero previsto di luoghi decimali per 2.5 è un personaggio; Ma sono stati usati 6 caratteri, dando 2.500000. Il seguente segmento di codice lo limita a 3 punti decimali:

Stringa str = stringa.formato("%.3f è una frazione impropria.", 2.5);
Sistema.fuori.println (str);

L'output è:

2.500 è una frazione impropria.

Il codice di precisione qui è .3 .

Il parametro di larghezza del specificatore del formato

La larghezza è il numero minimo di caratteri per la sostituzione nella stringa di formato. Alcuni tipi di argomenta. Tuttavia, altri possono sostituirlo con una larghezza più piccola o più grande. Come notato sopra, la larghezza prevista per 2.5 sono tre caratteri; Ma sono stati usati 8 caratteri, dando 2.500000. Il seguente segmento di codice dovrebbe limitare questo a una larghezza di 4 caratteri e tre luoghi decimali:

Stringa str = stringa.formato ("%4.3f è una frazione impropria.", 2.5);
Sistema.fuori.println (str);

L'output è:

2.500 è una frazione impropria.

L'impeditore del formato è %4.3f, dove 4 è la larghezza e 3 è il numero di luoghi decimali. In realtà ci sono 5 caratteri all'uscita, incluso il punto decimale, quindi 4 sono stati effettivamente ignorati. Il seguente segmento di codice produce una larghezza di 7 caratteri e 3 luoghi decimali:

Stringa str = stringa.formato ("%7.3f è una frazione impropria.", 2.5);
Sistema.fuori.println (str);

L'output è:

"" 2.500 è una frazione impropria.

Si noti che due caratteri spaziali precedono il numero per il numero completo per compensare una larghezza di sette caratteri. Il numero di luoghi decimali è 3 . Ci sono 7 personaggi qui, tutti insieme, incluso il punto decimale.

Il parametro Flags del specificatore del formato

La bandiera 0
Invece di precedere un numero con spazi, il numero può essere preceduto con 0. Il seguente segmento di codice illustra questo:

Stringa str = stringa.formato ("%07.3f è una frazione impropria.", 2.5);
Sistema.fuori.println (str);

L'output è:

002.500 è una frazione impropria.

L'esatto specificatore del formato qui è,

%07.3f

che dovrebbe essere confrontato con la sintassi del specificatore del formato,

%[argomento_index $] [flags] [larghezza] [.precisione] conversione

L'ordine dei meta-caratteri dell'esatto specificatore del formato rispetta l'ordine della sintassi del specificatore del formato. Il flag opzionale, 0, viene prima della larghezza opzionale, 7, che viene prima della precisione opzionale, .3, in conformità con la sintassi. 'f' è la conversione (ancora un meta-carattere).

La bandiera +
Con la bandiera +, il risultato intero è sempre preceduto da - o + . Il seguente programma illustra questo:

Stringa str = stringa.formato ("Il risultato è %+d euro.", -5);
Sistema.fuori.println (str);

L'output è:

Il risultato è di -5 euro.

I parametri opzionali di larghezza e precisione non sono inclusi con lo specificatore del formato esatto, %+d. Qui, D è la conversione per l'intero.

Considera il segmento del codice,

Stringa str = stringa.formato ("Il risultato è %+d euro.", 5);
Sistema.fuori.println (str);

L'output è,

Il risultato è di +5 euro.

Conclusione

Gli argomenti per il metodo del formato stringa sono divisi in due sezioni. La prima sezione è il primo argomento, che deve essere una stringa. È la stringa di interesse. Si chiama stringa di formato, sebbene abbia ancora alcune delle sue sotto-corde corrette (formattate). Il resto degli argomenti è indicato come elenco di argomenti. L'elenco degli argomenti ha le sottostringhe reali che necessitano di formattazione. Ognuno di questi substrings corrisponde a un specificatore di formato nella stringa di formato. Lo specificatore del formato utilizza i meta-caratteri per formattare.