Jak usunąć nieprawidłowe znaki z ciągu, aby można było użyć go jako pliku imię?
nieprawidłowe znaki należą ("\\/:*?\"<>|")
.usuwanie niepoprawnych znaków ((" /: *? " <> | ")) Z ciągu znaków, aby użyć go jako nazwy pliku
usuwanie niepoprawnych znaków (("\ \ /: *? \" <> | ")) Z ciągu znaków, aby użyć go jako nazwy pliku
Odpowiedz
Można spróbować,
String fileName = "\\/:*AAAAA?\"<>|3*7.pdf";
String invalidCharRemoved = fileName.replaceAll("[\\\\/:*?\"<>|]", "");
System.out.println(invalidCharRemoved);
WYJŚCIE
AAAAA37.pdf
należy zastąpić go podkreśleniem "_" zamiast pustym, ponieważ użytkownik może podać nazwę pliku składającą się tylko z nieprawidłowych znaków. w takim przypadku zwróci wartość null. – curious
co z CON i takimi słowami kluczowymi, z którymi użytkownik nie może utworzyć pliku? –
można użyć regex
String s= string.replaceAll("[\\\\/:*?\"<>|]", "");
Proszę przetestuj swoją odpowiedź przed opublikowaniem. Zauważysz, że występuje problem ze znakiem '' \ ''. Jaki jest sens "^"? – Pshemo
Jestem prawie pewny, że znak^oznacza dopełnienie zestawu, więc wszystko nie obejmuje elementów w zestawie znaków. –
Tak '^' na początku klasy znaków '[^ ...]' reprezentuje negację znaków, którą opisuje, co oznacza, że twoje rozwiązanie usunie wszystko, co nie jest znakiem specjalnym. To, co zrobiłby twój kod (zakładając, że poprawiłoby składnię) byłoby przeciwieństwem tego, co chce OP. – Pshemo
nie należy próbować zgadywać użytkownika. Jeśli dostarczona nazwa pliku jest nieprawidłowy po prostu pokazać się komunikat o błędzie lub wyjątek w razie potrzeby:
Removi ng nieprawidłowe znaki z podanej nazwy pliku w żaden sposób nie gwarantuje, że nowa nazwa pliku jest poprawna.
Można zastąpić znaki przez replaceAll()
:
@Test
public void testName() throws Exception
{
assertEquals("", "\\/:*?\"<>|".replaceAll("[\\\\/:*?\"<>|]", ""));
}
jednak pamiętać, że
.
i..
na własną rękę są również nieważne, chociaż pozwolić kropek- za pomocą pliku z WebDAV,
&
jest również niedozwolony znak (może być program Microsoft specyficzne) COM1
jest również nieważny nazwa pliku, mimo że ma tylko prawne znaki (dotyczy równieżPRN
,LPT1
i podobnych) (może być specyficzna dla Microsoft)$MFT
i podobnych są również nieważne, chociaż można ogólnie używać$
(m może być specyficzny dla NTFS)
- 1. Usuwanie znaków z ciągu znaków
- 2. Usuwanie znaków niealfanumerycznych z ciągu znaków
- 3. Usuwanie wielu typów znaków z ciągu znaków
- 4. Usuwanie zduplikowanych znaków z ciągu znaków
- 5. Usuwanie określonych znaków z ciągu znaków
- 6. Używanie ciągu znaków jako nazwy zmiennej
- 7. Usuwanie spacji z ciągu znaków
- 8. Usuwanie białych znaków w ciągu znaków XML
- 9. Usuwanie ostatnich znaków w ciągu XSLT
- 10. Usuwanie białych znaków w ciągu znaków
- 11. C++ Usuwanie znaków z ciągu znaków za pomocą STL
- 12. Usuwanie pewnych znaków z ciągu znaków w R
- 13. Usuwanie niedozwolonych znaków z ciągu XML C#
- 14. Usuwanie znaków sterujących z ciągu UTF-8
- 15. Usuwanie wszystkich białych znaków z ciągu znaków w Ruby
- 16. Usuwanie znaków sterujących (\ n \ r \ t) z ciągu znaków
- 17. Jak przekonwertować skrót mieszania MD5 na ciąg znaków i użyć go jako nazwy pliku
- 18. Usuwanie stoperw z ciągu znaków w Javie
- 19. Przycinanie/usuwanie zakładki ("\ t") z ciągu znaków
- 20. usuwanie spacji z ciągu znaków przez awk
- 21. Znajdź pierwsze wystąpienie ciągu znaków z wektora <string>
- 22. Usuwanie wszystkich znaków białych znaków z wyjątkiem „”
- 23. Carrierwave - "przesyłanie" pliku z ciągu znaków
- 24. Usuwanie części ciągu znaków w MYSQL
- 25. generowanie losowego ciągu znaków w php dla nazwy pliku
- 26. Usuwanie akcentów/znaków diakrytycznych z ciągu znaków przy zachowaniu innych znaków specjalnych (wypróbowano mb_chars.normalize i iconv)
- 27. Jak usunąć zakodowanych znaczników HTML z ciągu znaków w PHP
- 28. Usuwanie wszystkiego oprócz liczb w ciągu znaków
- 29. Jak można uciec z dowolnego ciągu znaków, aby użyć go jako argument wiersza polecenia w systemie Windows?
- 30. Usuwanie znaków NUL z bajtów
możliwy duplikat [Java: usuń wszystkie wystąpienia char z ciągu] (http://stackoverflow.com/questions/4576352/java-remove-all-occurrences-of-char-from -string) – Soana
Jest to zależne od platformy. Na przykład, linux nie ma problemu z wieloma z tych znaków w nazwach plików. – Qualia