Come posso validare un filename ed accertarmi che non esistano caratteri diversi da a-z, A-Z, 0-9, _, -, . blank?
Grazie
frapal
Come posso validare un filename ed accertarmi che non esistano caratteri diversi da a-z, A-Z, 0-9, _, -, . blank?
Grazie
frapal
Con una "espressione regolare". A parte i caratteri che hai indicato, precisa meglio il formato (quanti caratteri? centra la estensione?)Originariamente inviato da frapal
Come posso validare un filename ed accertarmi che non esistano caratteri diversi da a-z, A-Z, 0-9, _, -, . blank?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
una espressione regolare di questo tipo "[^\\w-.\u0020]"?
Precisamente Quale metodo devo usare?
Così però rappresenta solo 1 carattere. Se vuoi che valga per una sequenza di caratteri devi applicare un "quantificatore" a questa classe di caratteri.Originariamente inviato da frapal
una espressione regolare di questo tipo "[^\\w-.\u0020]"?
E invece di \u0020 puoi anche mettere proprio lo "spazio".
matches() di String.Originariamente inviato da frapal
Precisamente Quale metodo devo usare?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Perdona la mia incompetanze, ma non ho molta dimestichezza con le espressioni regolari.
dato il codice seguente:
Pattern pattern = Pattern.compile("[^\\w-.\ ]");
Matcher matcher = pattern.matcher(pdfFile.getName());
System.out.println(matcher.find());
io mi aspetto che
mi stampi true in questo caso:
ADTF_Log_File_2009_11_26-13_44_47.pdf
e false in quest'altro:
ADTF_Log_File_2009_11_26-13_44_47£$%&.pdf
invece mi restituisce sempre true.
Se volessi effettuare il controllo su ogni carattere che compone il filename, come devo modificare l'espressione regolare?
Grazie
A grandi linee è ok. Nel senso che se "neghi" la classe di caratteri, devi usare find() per cercare la occorrenza di quel pattern ovvero la non presenza di uno di quei caratteri (sembra un giro di parole ...Originariamente inviato da frapal
Perdona la mia incompetanze, ma non ho molta dimestichezza con le espressioni regolari.
dato il codice seguente:
Pattern pattern = Pattern.compile("[^\\w-.\ ]");
Matcher matcher = pattern.matcher(pdfFile.getName());
System.out.println(matcher.find());). Se si volesse usare matches() la classe va "positiva" e con un quantificatore per dire "che tutti siano caratteri accettati".
Puoi farlo in un senso o nell'altro ... è solo questione di intenderci!
Però hai messo un \ prima dello spazio. Non serve.
Come ho appena detto. Metti la classe "positiva" e con un quantificatore es. "[ .... ]+" ovvero "uno o più di quella classe". E lo usi con matches() (di String o di Matcher, decidi tu se compilare la regex 1 volta sola o no).Originariamente inviato da frapal
Se volessi effettuare il controllo su ogni carattere che compone il filename, come devo modificare l'espressione regolare?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ottimo.
Grazie mille