Estrazione di Caratteri da una Stringa in Java
- La classe
String
fornisce diversi metodi per estrarre caratteri, tra cuicharAt()
,getChars()
,getBytes()
etoCharArray()
. 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.