Библиотека для очистки и упрощения имен файлов?

#java #string #hibernate #spring #apache-commons

#java #строка #переход в спящий режим #spring #apache-commons

Вопрос:

Я хотел бы преобразовать имена файлов, содержащие пробелы и символы, так, чтобы они содержали только символы A-Z, a-z, точку, дефис и подчеркивание. Что-то вроде этого регулярного выражения: ([a-z][A-Z]-_.)

Конечно, я мог бы просто сделать это с помощью регулярного выражения. Но поскольку я уже включил в свой проект множество библиотек (Spring, Hibernate, Apache Commons и многое другое), мне было интересно, доступно ли что-то подобное уже.

Итак, строка, подобная этой:

 This>is some(string,with $invalid*-chars).jpg
  

Была бы преобразована в это:

 This_is_some_string_with__invalid_-chars_.jpg
  

Ответ №1:

Ни одна библиотека не сможет предложить вам что-то более простое, чем String.replaceAll("[^a-zA-Z0-9-_\.]", "_")

Комментарии:

1. Верно. Я просто подумал, что это было бы достаточно распространенным требованием, чтобы у какой-нибудь стандартной вспомогательной библиотеки был StringUtil.cleanFilename(name) тип метода. Ничего особенного. Кстати, правильное регулярное выражение для использования: "somestring".replaceAll("[^a-zA-Z0-9-_\.]", "_") .

2. Было бы хорошо, если бы ответ можно было обновить регулярным выражением в комментарии, так как это лучше.

3. Стоит отметить, что это не будет работать с любой системой, где у пользователей могут быть файлы с не буквенно-цифровыми символами (китайский, любой язык с акцентами и т.д.)