Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [JAVA] split

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141

    [JAVA] split

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Mi pare anche che sia giusto!

    arr.length = 2 perchè nell'array ci sono 2 elementi:
    codice:
    String miastring="pippo=(abbb&&&ppp)" 
    String[] arr=miastring.split("\\("); 
    arr[0] = "pippo="
    arr[1] = "abbb&&&ppp)"
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    no scusa mi sono sbagliato a scrivere la mia stringa è :
    String miastring="(pippo=abbb&&&ppp=ggggg)"

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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:
    codice:
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    Giusto, hai ragione,quindi mi basta testare se l'elemento dell'array è vuoto.
    Grazie mille, ero convinto che mi ridasse solo un'elemento.
    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.