PDA

View Full Version : [JAVA]Come faccio a dire di stampare una stringa quando è presente uno spazio?


xxdavide84xx
24-01-2008, 04:43
Io ho delle strighe tipo
"Ciao mio cane"
"Ciao mio lupo"
"Ciao mio pesce"

Io vorrei dire stampa cane, lupo e pesce...

Se faccio
ciclo for
System.out.println(Stringa);
mi stampa tutto....

Come fare?

^TiGeRShArK^
24-01-2008, 08:00
Qualcosa del genere:

String[] tokens = stringToParse.split(" ");
for (int i = 0; i < (tokens.length - 2); i++) {
System.out.print(tokens[i] + ", ");
}
System.out.print(tokens[tokens.length - 1] + " e " + tokens[tokens.length]);

xxdavide84xx
24-01-2008, 09:02
Qualcosa del genere:

String[] tokens = stringToParse.split(" ");
for (int i = 0; i < (tokens.length - 2); i++) {
System.out.print(tokens[i] + ", ");
}
System.out.print(tokens[tokens.length - 1] + " e " + tokens[tokens.length]);


Non riesco a capire stringToParse a cosa dovrebbe essere uguale???

banryu79
24-01-2008, 09:10
stringToParse è solo il nome della tua String (ad esempio contenente "Ciao mio cane") che vuoi "spezzettare".

la classe String è dotata del metodo split() che ti consente di passare come argomento una regex (espressione regolare) con cui "parserizzare" la Stringa stessa; il metodo di restituisce un array di String, che sono i vari "token" in cui la String originaria è stata spezzata.

xxdavide84xx
24-01-2008, 09:19
Mi scrive la prima parola e poi mi da un'ECCEZZIONE...
Indice,
java.lang.ArrayIndexOutOfBoundsException: 1
at ParserDOM.controlli(ParserDOM.java:392)
at ParserDOM.<init>(ParserDOM.java:54)
at ParserDOM.main(ParserDOM.java:193)
l'eccezione è dovuta a
System.out.print(tokens[tokens.length - 1] + " e " + tokens[tokens.length]);
se levo questa riga mi da tutto ok
esattamente l'errore generato sopra è dovuto da tokens[tokens.length]);

lovaz
24-01-2008, 09:39
tokens[tokens.length]

è sempre fuori dai limiti

xxdavide84xx
24-01-2008, 09:57
tokens[tokens.length]

è sempre fuori dai limiti

giusto, perchè sii parte da 0, vero???
l'ultimo dovrebbe essere tokens[tokens.length-1] se non sbaglio, confermi?


Ora voglio porre questo problema....io ho più di 1000 stringhe e solo uno contiene Anno Accademico 2006/07
io vorrei dire
if ( stringa.equalsIgnoreCase("Anno Accademico")
STAMPA OK

Io non entrerò MAI nell'if a meno che non faccia così:if ( stringa.equalsIgnoreCase("Anno Accademico 2006/07"), sperando che poi dopo 2006/07 non vi sia uno SPAZIO......come posso ovviare al problema???

lovaz
24-01-2008, 10:05
Sì.

per l'altro problema:

if ( stringa.startsWith("Anno...

xxdavide84xx
24-01-2008, 10:18
Sì.

per l'altro problema:

if ( stringa.startsWith("Anno...

Grazie anche per questo...è possibile unire
startsWith con il caso in cui il programma non sia case sensitive???

Es Stringa a="ANNO accademico 1"
Stringa b="Anno Accademico 2"
Stringa c="anno Accademico 3"


if(stringa.startsWith("anno"))
i++;
System.out.println(i); i finale deve essere UGUALE a 3...

se scrivo così è uguale a 1

sottointeso che non vorrei usare questo METODO:
if(stringa.startsWith("Anno")||stringa.startsWith("anno")||stringa.startsWith("ANNO"))

lovaz
24-01-2008, 10:23
if ( stringa.toLowerCase().startsWith("anno...

String ha molti metodi utili, ti consiglio un'occhiata al javadoc:
http://java.sun.com/javase/6/docs/api/java/lang/String.html

xxdavide84xx
24-01-2008, 10:33
if ( stringa.toLowerCase().startsWith("anno...

String ha molti metodi utili, ti consiglio un occhiata al javadoc:
http://java.sun.com/javase/6/docs/api/java/lang/String.html

Grazie infinite!!!!