View Full Version : [JAVA] Impostare i delimitatori della classe Scanner
Ciao, ho un noioso problema, non riesco ad impostare, attraverso il metodo useDelimiter() della classe Scanner, il delimitatore che salta tutti gli spazi fra una parola e l'altra (che è quello predefinito) contemporaneamente ad altro delimitatore formato da una stringa a mio piacimento.
Come si fa?:D
Esempio:
Gauss CarlFriedrich : 569079
(fra le parole ci sono tanti spazi, l'editor di testo del forum li elimina)
stampato con un println deve risultare:
Gauss
CarlFriedrich
569079
wingman87
08-02-2013, 16:46
Prova questo delimitatore:
\s+(:\s+)?
\s+ seleziona gli spazi
(:\s+)? seleziona, se ci sono, il : più uno o più spazi
console.useDelimiter("\s+(:\s+)?");
il compilatore mi segnala il "\s" come carattere di escape illegale... :(
wingman87
09-02-2013, 23:20
Questo perché il backslash '\' è il carattere di escape, quindi java non lo vede come singolo carattere ma prende anche il carattere successivo (in questo caso prende '\s') e tenta di ricondurlo ad una "sequenza di escape". Ma \s non è una sequenza di escape e quindi ti da errore. Per risolvere basta raddoppiare i backslash, in questo modo '\\' viene interpretato come un singolo carattere di backslash.
Per conoscere le sequenze di escape puoi vedere questa pagina (in fondo):
http://docs.oracle.com/javase/tutorial/java/data/characters.html
PS: se '\s' fosse stata una sequenza di escape valida non avresti ottenuto un errore di compilazione ma a runtime ovviamente la regex non sarebbe stata interpretata come desiderato e quindi non avrebbe funzionato lo stesso.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.