Regex для замены символов, которые Windows не принимает в имени файла - PullRequest
32 голосов
/ 16 апреля 2009

Я пытаюсь создать регулярное выражение, которое будет определять любой символ, который Windows не принимает как часть имени файла (они одинаковы для других ОС? Я не знаю, если честно).

Эти символы:

 \ / : * ? "  | 

В любом случае, вот что у меня есть: [\\/:*?\"<>|]

Тестер на http://gskinner.com/RegExr/ показывает, что это работает. Для строки Allo*ha загорается символ *, сигнализирующий, что он найден. Однако, если я введу Allo**ha, загорится только первый *. Поэтому я думаю, что мне нужно изменить это регулярное выражение, чтобы найти все появления упомянутых персонажей, но я не уверен.

Видите ли, в Java мне повезло иметь функцию String.replaceAll (регулярное выражение строки, замена строки) . В описании сказано:

Заменяет каждую подстроку этой строки, которая соответствует данному регулярному выражению, с данной заменой.

Другими словами, даже если регулярное выражение только находит первое, а затем прекращает поиск, эта функция все равно найдет их.

Например: String.replaceAll("[\\/:*?\"<>|]","")

Однако я не чувствую, что могу пойти на такой риск. Так кто-нибудь знает, как я могу продлить это?

Ответы [ 11 ]

0 голосов
/ 16 апреля 2009

Вы можете попробовать разрешить ввод только тех материалов, которые вы хотите ввести пользователю, например, A-Z, a-z и 0-9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...