Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104

    [JAVA] Come dividere una stringa?

    Buon pomeriggio a tutti..
    Il mio obiettivo è leggere una riga di un file txt e dividere le parole in base ai campi della LinkedList in cui vanno poi inseriti.

    La stringa è così strutturata:
    1 - Romeo - Luisa - 20/06/2013 - 29

    le sottostringhe all'interno di " - " devono essere inserite nei campi dell'elenco che ho già scritto.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Come dividere una stringa?

    Originariamente inviato da LuLyLuNa
    Il mio obiettivo è leggere una riga di un file txt e dividere le parole in base ai campi della LinkedList in cui vanno poi inseriti.

    La stringa è così strutturata:
    1 - Romeo - Luisa - 20/06/2013 - 29

    le sottostringhe all'interno di " - " devono essere inserite nei campi dell'elenco che ho già scritto.
    In vari modi:
    - StringTokenizer che usa come delimitatore "-" (nota: poi i token hanno spazi ai lati, devi trimmarli con trim() !)
    - split di String con la regex "-" (o, anzi, meglio " - ")
    - Uso diretto di Pattern/Matcher con una regex che estrae direttamente tutti i campi con dei "gruppi" (soluzione appropriata anche per "validare" il formato della riga).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Da quel che leggo in giro, split è il più semplice e utilizzato. Forse è il migliore?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LuLyLuNa
    Da quel che leggo in giro, split è il più semplice e utilizzato. Forse è il migliore?
    split è certamente semplice ma ad esempio non ti "valida" un bel niente. Se volessi anche validare il formato in modo abbastanza "stretto" allora sarebbe meglio la 3a opzione che ho detto.
    Ovviamente scegli tu quello che è meglio per te.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Con "validare" intendi che non considera gli spazi?
    Per comodità potrei direttamente scrivere la riga senza gli spazi.
    Oppure potrei creare lo split() così:
    codice:
    String[] items = riga.split(" - ");

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LuLyLuNa
    Con "validare" intendi che non considera gli spazi?
    No, si intende: validare il formato per aspettarsi, detto a parole: "una o più cifre decimali, uno spazio, trattino, uno spazio, una o più lettere, ........".

    Originariamente inviato da LuLyLuNa
    Oppure potrei creare lo split() così:
    codice:
    String[] items = riga.split(" - ");
    Sì, così è corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Originariamente inviato da andbin
    No, si intende: validare il formato per aspettarsi, detto a parole: "una o più cifre decimali, uno spazio, trattino, uno spazio, una o più lettere, ........".

    Sì, così è corretto.
    Posso chiederti un esempio di Pattern/Matcher?
    Trovo tutto in inglese e non sono ferrata..

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da LuLyLuNa
    Posso chiederti un esempio di Pattern/Matcher?
    Trovo tutto in inglese e non sono ferrata..
    Prova questo:

    codice:
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    
    public class Prova {
        private static Pattern patternNomeAnno = Pattern.compile("([A-Za-z]+);([0-9]{4})");
    
        public static void main(String[] args) {
            test("Marco;1983");
            test("Marco ; 1983");
            test("Marco2;1983");
            test("Marco;83");
        }
        
        private static void test(String str) {
            System.out.print(str);
            
            Matcher matcher = patternNomeAnno.matcher(str);
            
            if (matcher.matches()) {
                System.out.println("   OK, nome=" + matcher.group(1)
                        + "   anno=" + matcher.group(2));
            } else {
                System.out.println("   Non valido");
            }
        }
    }
    La documentazione sui costrutti delle regex è nel javadoc di Pattern
    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.