Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    2

    [java] Split di una stringa

    Ciao ho un problema nell'eseguire uno split di una stringa.

    Ho una funzione che prende in input una stringa che può avere due formati, per esempio:

    1- "a,b,h c = red ,true"
    2- "f,p,h c = red , d = blue ; e = black ,false"

    la parte in rosso si compone sempre con h all'inizio e poi numero qualsiasi di coppie letttera=colore separati da una , o da un ; a seconda dei casi.

    le due stringhe devono essere quindi divise in questo modo:

    1-
    a
    b
    h c=red
    true

    2-
    f
    p
    h c = red , d = blue ; e = black
    false

    inizialmente usavo il metodo split in questo modo:

    str.split(",");

    ma con il secondo formato ovviamente separa in maniera errata. E' necessario cambiare l'espressione regolare passata come argomento di split ma non riesco a scrivere quella corretta potete aiutarmi? grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non credo tu possa trovare facilmente un'espressione regolare che soddisfa interamente la tua logica. Per cominciare, è estremamente complesso dirgli di separare sempre secondo la virgola ma non quando incontra una "h". E se anche tu riuscissi a dirglielo, come fai a dirgli di "ricominciare a separare"? Quale dovrebbe essere il criterio secondo il quale dovrebbe cominciare nuovamente a separare? Negli esempi che hai fatto c'è sempre un ", false" alla fine... è sempre così?

    Secondo me dovresti andare per passi: prima gli fai separare tutto secondo la virgola o il punto e virgola, e poi fai le tue considerazioni scorrendo l'array: quando trovi la lettera "h" sai che devi concatenare tutto il resto in un'unica stringa finchè continui a trovare coppie <chiave = valore>. Del resto non hai tante alternative.

    Non so se sia ammesso, ad esempio questo caso:
    "f,h c = red , d = blue ; e = black , p, false"

    Come fai a sapere che dopo "black" non devi più concatenare?

    Altro esempio, che non so se sia ammesso nel tuo input:

    "f,p,h c = red , d = blue ; e = black ,false, true"
    Come fai a sapere che dopo "black" non devi più concatenare?


    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
    Aug 2011
    Messaggi
    2
    Secondo me dovresti andare per passi: prima gli fai separare tutto secondo la virgola o il punto e virgola, e poi fai le tue considerazioni scorrendo l'array: quando trovi la lettera "h" sai che devi concatenare tutto il resto in un'unica stringa finchè continui a trovare coppie <chiave = valore>. Del resto non hai tante alternative.
    In effetti le alternative sono poche in ogni caso la tecnica di dividere secondo la virgola e poi scorrere l'array è sicuramente una tecnica attuabile nel mio programma e che probabilmente adotterò. In fondo con le poche conoscenze che avevo delle espressioni regolari mi sembrava già una cosa difficile, ora ho avuto la conferma.

    Appena implemento il codice per completezza lo posto.

    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.