Come troncare un testo dopo 20 caratteri in Java
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
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
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.
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.
i (indice di scan della stringa da analizzare)
nuovaStringa (istanza di nuova stringa)
finchè i
altrimenti nuovaStringa += i-esimo carattere;
incrementa i;
}
Devi solo tradurre questa pseudo-codifica in quella di java.
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!
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!