/* Definire una classe Trim che definisce il metodo di classe * String trim(String s) che, data la stringa s non nulla, * calcola la stringa ottenuta da s eliminando gli spazi bianchi ad * entrambe le estremità di s. * Spazi bianchi all'interno di s vanno mantenuti. * Se s non inizia né termina per spazi bianchi, va restituito * il riferimento a s. * Se s è composta solo da spazi bianchi, restituisce la stringa vuota. */ class Trim { /* Calcola la stringa ottenuta rimuovendo * gli spazi bianchi dalle estremità di s. * Per spazio bianco si intende un qualsiasi carattere * il cui valore è minore o uguale al carattere spazio ' '. */ public static String trim(String s) { // pre: s!=null int ls; // lunghezza di s int primo; // indice del primo carattere non spazio di s // (ls se s contiene solo spazi) int ultimo; // indice dell'ultimo carattere non spazio di s String t; // la stringa s senza spazi alle estremità int i; // indice per la scansione di s final char SPAZIO = ' '; // il carattere spazio /* calcola la lunghezza di s */ ls = s.length(); /* calcola l'indice del primo carattere non spazio di s, * oppure ls se s contiene solo spazi bianchi */ primo = 0; while (primo=0 && s.charAt(ultimo)<=SPAZIO) ultimo--; /* calcola t */ if (ls==0 || (primo==0 && ultimo==ls-1)) /* se s è la stringa vuota, o se non inizia né termina * per spazi bianchi, va restituita s */ t = s; else /* s non è vuota e inizia e/o termina per spazi bianchi */ if (primo==ls) /* s è non vuota ma composta solo da spazi bianchi */ t = ""; else { /* s non è vuota e inizia e/o termina per spazi bianchi, * ma non è composta solo da spazi bianchi, * va calcolata la sottostringa di s che contiene * i caratteri dalla posizione primo a ultimo (comprese) */ t = ""; for (i=primo; i<=ultimo; i++) t += s.charAt(i); } return t; } /* Metodi di test per trim. */ private static void testTrim(String s, String atteso) { System.out.println("trim(\"" + s + "\"): " + "\"" + trim(s) + "\" (\"" + atteso + "\")"); } private static void testTrim() { testTrim("", ""); testTrim(" ", ""); testTrim("abc", "abc"); testTrim("abc ", "abc"); testTrim(" abc", "abc"); testTrim(" abc ", "abc"); testTrim(" a c ", "a c"); } /* Applicazione di test */ public static void main(String[] args) { testTrim(); } }