Come troncare un testo dopo 20 caratteri in Java

lupodimare2
Buonasera, sono uno studente alle prime armi e mi servirebbe un consiglio su come fare una funzione in java che faccia il controllo dei caratteri su un testo.

Mi spiego meglio io ho un testo in input di n caratteri, io vorrei che la mia funzione mi restituisse il testo tagliato a 20 caratteri.

Fin qui non ci sono problemi perchè si può fare tranquillamente con una substring, il problema è che io vorrei fare dei controlli sul taglio!

In pratica se il carattere 20 è al centro di una parola la mia funzione dovrebbe tagliare alla fine di quella parola e non troncare la parola.

Grazie a tutti

Antonio

Risposte
apatriarca
Copia i primi 19 caratteri della stringa in uno StringBuffer. Se il ventesimo carattere è uno spazio, allora sei a posto, in caso contrario continua ad aggiungere caratteri allo StringBuffer finché non finisce la parola. Una volta finita crea la tua stringa a partire dallo StringBuffer.

xsl
Oppure fai una cosa del genere:

i (indice di scan della stringa da analizzare)
nuovaStringa (istanza di nuova stringa)

finchè i se (i>=20 and i-esimo carattere è uno spazio) return nuovaStringa;
altrimenti nuovaStringa += i-esimo carattere;

incrementa i;
}

Devi solo tradurre questa pseudo-codifica in quella di java.

lupodimare2
Ciao a tutti e grazie per il consiglio....

Alla fine l'ho sviluppata in questo modo la funzione e sembra funzionare....


public static String strCut(String line, int maxLength) {
String stringCut = "";
int index = 0;

StringBuffer stringBuffer = new StringBuffer();

if (maxLength >= line.length()){

}
else{
while(index < maxLength){
char c = line.charAt(index++);
stringBuffer.append(c);
}

while(index < line.length()){
char c = line.charAt(index++);
boolean currWhiteSpace = Character.isWhitespace(c);

if(!currWhiteSpace){
stringBuffer.append(c);
stringCut = stringBuffer.toString();

}
else{
stringCut = stringBuffer.append(c).toString();
break;

}
}
}
return stringCut;

}


Sicuramente si poteva fare meglio :)

Ciao!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.