Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52

    Parsing di una stringa

    Ciao a tutti!!
    sto imparando Java, e dopo aver studiato un manuale mi sto cimentando in qualcosa di pratico!!!!
    Ho una stringa del tipo "-2006-200725M20S-200850M25S30M-2009-2010-201150M80S"
    Come avrete capito dopo ogni anno ci sono dei numeri e quindi dopo ogni anno ci sono stringhe di lunghezza variabile...
    Per iniziare ho utilizzato il metodo split facendo
    codice:
    String[] splitted = stringone.split("-");
    A questo punto ho anno per anno in un array di stringhe...
    ora come faccio ad andare oltre?come potrei suddividere il contenuto delle stringhe che sono appunto di lunghezza variabile?!??!

    Grazie a chiunque voglia darmi qualche spunto di riflessione!!!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Esiste una sezione apposita dedicata al linguaggio Java e alle tecnologie correlate.
    Sposto la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Se tu sai che ogni sottostringa comincia con un anno (sempre di 4 caratteri), puoi utilizzare il metodo substring() per ottenere la sottostringa a partire da un determinato carattere.

    Esempio:

    codice:
    String str = "200725M20S";   // E' il secondo elemento della tua stringa die sempio
    String numero = str.substring(4);   // Sottostringa a partire dal 5o carattere
    
    System.out.println( numero );
    Questo è il risultato in output
    codice:
    25M20S
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52
    Ciao Lele, in effetti già avevo pensato ad una substring per tirare fuori l'anno...
    il problema principale sta in quei "25M20S" che dovrebbero essere estrapolati come 25M e 25S ed il fatto che sono di lunghezza variabile(ad es per il 2008 erano 3 "50M25S30M" )...

    Ti viene in mente qualcosa per questo?!?!?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    dovresti dare un'occhiatina alle Regular Expressions. Tolto il primo split attorno a "-", se sai che hai tutti numeri e alcuni caratteri non numerici (a-zA-Z), potresti scrivere una regex per splittare attorno ai caratteri non "digit", ovvero trovarne l'indice ed usare substring.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52
    potresti scrivere una regex per splittare attorno ai caratteri non "digit", ovvero trovarne l'indice ed usare substring.
    Auguri!!!!!!
    Andrea grazie per l'incipit! mi ci metto e cerco di fare ciò che posso, anche se non ho mai usato le RegularExpression!!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52
    Scusate, ma io ora mi trovo con un vettore di stringhe in cui ogni stringa è tipo:
    "2006", "200725M20S", "200830M20S" etc...

    Come faccio ad estrapolare solo i primi 4 caratteri di ogni stringa(con la substring) e metterli nuovamente in un vettore di stringhe con un ciclo for?!?!?

    Mi verrebbe così:

    codice:
    for(int i=0; i<str.lenght; i++)
    String[] numero = str[i].substring(0, 4);
    Oddio è orribile non può essere così!!!!

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Daved84
    Come faccio ad estrapolare solo i primi 4 caratteri di ogni stringa
    Usa il substring(int beginIndex, int endIndex)
    Occhio che endIndex è esclusivo, non è incluso insomma.

    Per la parte restante, se sai a priori che ogni particella è composta sempre da 3 caratteri (es. "30M") puoi continuare ad usare substring semplicemente calcolando gli indici da usare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52
    Andbin grazie per la risposta...
    Purtroppo la lunghezza della stringa dopo l'anno è variabile e quindi non posso usare la substring per dividere i 20M25M etc...

    Per quanto riguarda invece l'estrapolazione del solo anno come prendo da ogni stringa solo i primi 4 caratteri e li metto in un array di stringhe con il ciclo for?mica come avevo scritto nel post precedente???

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Daved84
    Purtroppo la lunghezza della stringa dopo l'anno è variabile e quindi non posso usare la substring per dividere i 20M25M etc...
    Che è variabile l'ho capito! .... io dicevo se le singole particelle es. "20M" o "25M" sono sempre di 3 caratteri.
    Se sì, non importa quante sono, potresti comunque "saltare" di particella in particella sempre con il substring.
    (dico "particella" perché non so cosa sono e non mi viene in mente un altro termine ).

    Originariamente inviato da Daved84
    Per quanto riguarda invece l'estrapolazione del solo anno come prendo da ogni stringa solo i primi 4 caratteri e li metto in un array di stringhe con il ciclo for?
    Scusa ma qui non capisco io. Ognuno degli anni, come String unico es. "2008" lo vuoi mettere in un array?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.