有人知道一些返回操作系统友好文件名的Java类吗?


问题内容

我的网页中有一个上传器,但是有些人上传了名为“compañia15%* 09.jpg”的文件,当文件名像那个文件时,我遇到了问题。

我想找到一个返回该示例的类,如下所示:“ compania1509.jpg”。


问题答案:

换句话说,您想摆脱可打印ASCII范围之外的所有字符吗?您可以为此使用String#replaceAll()模式[^\x20-\x7e]

name = name.replaceAll("[^\\x20-\\x7e]", "");

如果您也想摆脱空格,请\x21改用。您甚至可以仅将其限制为单词字符。使用\W表示“任何非字”的字符。然后,该名称将仅与字母数字和下划线匹配。

name = name.replaceAll("\\W", "");