清理和简化文件名的库?

7
我希望将文件名中的空格和符号转换为只包含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个回答

11

没有任何库能够比String.replaceAll("[^a-zA-Z0-9-_\\.]", "_")提供更简单的东西。


10
没错。我认为这应该是一个比较常见的需求,因此一些标准的辅助库会提供类似StringUtil.cleanFilename(name)这样的方法。没什么大不了的。顺便说一下,正确的正则表达式应该是:"somestring".replaceAll("[^a-zA-Z0-9-\.]", "")。 - Tauren
2
如果能将评论中的正则表达式更新到答案中,那就更好了。 - Wim Deblauwe
1
值得注意的是,这将无法与任何可能包含非字母数字字符(中文、任何带有重音符号的语言等)的文件的系统一起使用。 - rococo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接