Estrazione di Caratteri da una Stringa in Java

Concetti Chiave
  • La classe String fornisce diversi metodi per estrarre caratteri, tra cui charAt(), getChars(), getBytes() e toCharArray().
  • charAt() restituisce un singolo carattere a un indice specificato.
  • getChars() estrae una sotto-stringa in un array di caratteri.
  • getBytes() converte i caratteri in un array di byte.
  • toCharArray() converte l'intera stringa in un array di caratteri.

Estrazione di Caratteri

La classe String fornisce diversi modi in cui i caratteri possono essere estratti da un oggetto String. Analizziamo i più comuni in questa lezione.

Anche se i caratteri che compongono una stringa all'interno di un oggetto String non possono essere indicizzati come se fossero un array di caratteri, molti dei metodi String impiegano un indice (o offset) nella stringa per la loro operazione. Come gli array, gli indici delle stringhe iniziano da zero.

charAt

Per estrarre un singolo carattere da una String, possiamo riferirci direttamente a un carattere individuale tramite il metodo charAt().

Il metodo ha questa forma generale:

char charAt(int dove)

Qui, dove è l'indice del carattere che vogliamo ottenere. Il valore di dove deve essere non negativo e specificare una posizione all'interno della stringa. charAt() restituisce il carattere nella posizione specificata.

Per esempio,

char ch;
ch = "abc".charAt(1);

assegna il valore b a ch.

getChars

Se abbiamo bisogno di estrarre più di un carattere alla volta, possiamo usare il metodo getChars().

Il metodo ha questa forma generale:

void getChars(int sourceStart,
              int sourceEnd,
              char[] target,
              int targetStart)

Qui, sourceStart specifica l'indice dell'inizio della sotto-stringa, e sourceEnd specifica un indice che è uno oltre la fine della sotto-stringa desiderata. Quindi, la sotto-stringa contiene i caratteri da sourceStart fino a sourceEnd – 1. L'array che riceverà i caratteri è specificato da target. L'indice all'interno di target al quale la sotto-stringa verrà copiata è passato in targetStart. Bisogna fare attenzione ad assicurarsi che l'array target sia abbastanza grande da contenere il numero di caratteri nella sotto-stringa specificata.

Il seguente programma dimostra l'uso di getChars():

class DemoCaratteri {

    public static void main(String[] args) {
        String s = "Questa è una demo del metodo getChars.";

        int inizio = 13;
        int fine = 18;

        char[] buf = new char[fine - inizio];

        s.getChars(inizio, fine, buf, 0);
        System.out.println(buf);
    }

}

Ecco l'output di questo programma:

demo

getBytes

Esiste un'alternativa a getChars() che memorizza i caratteri in un array di byte. Questo metodo è chiamato getBytes(), e utilizza le conversioni da carattere a byte predefinite fornite dalla piattaforma.

Ecco la sua forma più semplice:

byte[] getBytes()

Sono disponibili anche altre forme di getBytes(). getBytes() è molto utile quando si sta esportando un valore String in un ambiente che non supporta caratteri Unicode a 16 bit.

toCharArray

Se vogliamo convertire tutti i caratteri in un oggetto String in un array di caratteri, il modo più semplice è chiamare toCharArray(). Restituisce un array di caratteri per l'intera stringa.

Ha questa forma generale:

char[] toCharArray()

Questa funzione viene fornita per comodità, poiché è possibile utilizzare getChars() per ottenere lo stesso risultato.