PDA

Visualizza la versione completa : [JAVA] split


vgiani
13-06-2005, 16:59
Qualcuno mi sa dire perchè non funziona il metodo split con "(" (parentesi aperta) come delimitatore?

Io ho una stringa:
String miastring="pippo=(abbb&&&ppp)"
faccio
String[] arr=miastring.split("\\(");

a questo punto arr.length = 2 e non a uno.

Come mai?
Grazie

LeleFT
13-06-2005, 17:01
Mi pare anche che sia giusto! :)

arr.length = 2 perchè nell'array ci sono 2 elementi:


String miastring="pippo=(abbb&&&ppp)"
String[] arr=miastring.split("\\(");
arr[0] = "pippo="
arr[1] = "abbb&&&ppp)"

Ciao. :ciauz:

vgiani
13-06-2005, 17:10
no scusa mi sono sbagliato a scrivere la mia stringa è :
String miastring="(pippo=abbb&&&ppp=ggggg)"

LeleFT
13-06-2005, 17:15
Ora come ora non ho la possibilità di effettuare delle prove, ma credo che il risultato sia corretto lo stesso; in questo caso, infatti, credo che l'array venga costruito in questo modo:


arr[0] = "" // Stringa vuota: non c'è niente prima del separatore
arr[1] = "pippo=abbb&&&ppp=ggggg)"

Il meccanismo che sta al di sotto del metodo split() si basa sulle Espressioni Regolari. L'espressione regolare, quindi, incontra un separatore all'inizio ed effettua un primo split: stringa vuota (epsilon) per il primo token, poi prosegue con i vari match nella stringa... fino alla fine, dove non trova altri separatori e costruisce il secondo token.

Potrei sbagliarmi, ma credo che le cose vadano proprio in questo modo. Prova a stampare il valore di arr[0] e arr[1] per verificare cosa accade.


Ciao. :ciauz:

vgiani
13-06-2005, 17:24
Giusto, hai ragione,quindi mi basta testare se l'elemento dell'array è vuoto.
Grazie mille, ero convinto che mi ridasse solo un'elemento.
Ciao

Loading