Regex zum überprüfen einer mit dem Namen
Muss ich zum überprüfen eines in ein Verfahren wie dieses.
validateFileName(Editable s) {
String filtered_str = s.toString();
if (filtered_str.matches(".*[regexp].*")) {
filtered_str = filtered_str.replaceAll("[regxp]", "");
s.clear();
s.append(filtered_str);}
Die regexps sollte ich verwenden, um auszuschließen, alle illegalen Zeichen und white-spaces? Ich bin mit linux
Das einzige ungültige Zeichen in einem Dateinamen auf einem Unix-Dateisystem sind
Sie möglicherweise ausschließen möchten die folgenden aus als Dateinamen in Ihrem eigenen Recht zu:
/
(Pfad-separator) und \0
(Ende von string, die in C).Sie möglicherweise ausschließen möchten die folgenden aus als Dateinamen in Ihrem eigenen Recht zu:
.
, ~
, #
, -
.
InformationsquelleAutor Binoy Babu | 2012-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn deine Idee ist, nur um auszuschließen ilegal Raum und char können Sie so etwas wie:
'^[^*&%\s]+$'
wo Sie hinzufügen können alle "ilegal" char in der Liste der chars (in diesem Fall ignoriert es *, &, % und Leerzeichen)
\s
ist der Raum! Die^
innerhalb der[]
ist Teil der regex-syntax bedeutet: tun nicht passen alle chars innerhalb[]
.InformationsquelleAutor Gustavo Vargas
Wenn Sie mit POSIX-konformen Betriebssystem, die zulässigen Zeichen in einem Datei-Namen sind a-z, A-Z, 0-9, Punkt, Unterstrich und Bindestrich. Die regex-match "illegalen" Zeichen wäre also
[^-_.A-Za-z0-9]
Nachtrag: Dies ist, wenn Sie möchten, eine voll-portable-Datei Namen. Als ich korrigiert wurde, in der Josip Kommentar unten, POSIX sich tatsächlich erlaubt mehr Zeichen.
Ah, ja. Sollte ich das geklärt haben, in meiner Antwort, wenn du willst, ein voll portabel mit dem Namen, den Sie möchten, verwenden Sie die regex, die ich beschrieb. Dieser kam aus dem Buch POSIX Programmer ' s Guide: Writing Portable UNIX Programs von Donald Lewine (1991), S. 63-64.
Das ist immer noch sehr restriktiv, was verständlich ist, für 1991, aber nicht wirklich in diesen Tagen, wenn z.B. Kommas und Leerzeichen in Dateinamen sind so verbreitet unter den Nutzern. Sie würden sich wahrscheinlich beschweren, wenn Sie auf diese, und die Einhaltung der Grenzwerte aus den 80er Jahren würde das nicht unbedingt als eine vernünftige Begründung.
InformationsquelleAutor Anachronist