Java Language sottostringhe


Esempio

String s = "this is an example";
String a = s.substring(11); // a will hold the string starting at character 11 until the end ("example")
String b = s.substring(5, 10); // b will hold the string starting at character 5 and ending right before character 10 ("is an")
String b = s.substring(5, b.length()-3); // b will hold the string starting at character 5 ending right before b' s lenght is out of 3  ("is an exam")

Le sottostringhe possono anche essere applicate per tagliare e aggiungere / sostituire caratteri nella sua stringa originale. Ad esempio, hai affrontato una data cinese contenente caratteri cinesi, ma vuoi memorizzarla come una stringa di data in formato well.

String datestring = "2015年11月17日"
datestring = datestring.substring(0, 4) + "-" + datestring.substring(5,7) + "-" + datestring.substring(8,10);
//Result will be 2015-11-17

Il metodo della sottostringa estrae un pezzo di una String . Quando viene fornito un parametro, il parametro è l'inizio e il pezzo si estende fino alla fine della String . Quando vengono dati due parametri, il primo parametro è il carattere di partenza e il secondo parametro è l'indice del carattere subito dopo la fine (il carattere dell'indice non è incluso). Un modo semplice per verificare è la sottrazione del primo parametro dal secondo dovrebbe fornire la lunghezza prevista della stringa.

Java SE 7

Nelle versioni JDK <7u6 il metodo della substring crea un'istanza di una String che condivide lo stesso char[] backup char[] della String originale e dispone dei campi di offset e count interni impostati per l'inizio e la lunghezza del risultato. Tale condivisione può causare perdite di memoria, che possono essere prevenute chiamando la new String(s.substring(...)) per forzare la creazione di una copia, dopo di che char[] può essere garbage collection.

Java SE 7

Da JDK 7u6 il metodo della substring copia sempre l'intero array char[] sottostante, rendendo la complessità lineare rispetto alla costante precedente ma garantendo l'assenza di perdite di memoria contemporaneamente.