如何从String中删除无效字符,以便它可以用作文件名?
无效字符包括("\\/:*?\"<>|")
。
答案 0 :(得分:16)
你可以试试这个,
String fileName = "\\/:*AAAAA?\"<>|3*7.pdf";
String invalidCharRemoved = fileName.replaceAll("[\\\\/:*?\"<>|]", "");
System.out.println(invalidCharRemoved);
<强> 输出 强>
AAAAA37.pdf
答案 1 :(得分:3)
您可以使用正则表达式
String s= string.replaceAll("[\\\\/:*?\"<>|]", "");
答案 2 :(得分:1)
你不应该试着再次猜测用户。如果提供的文件名不正确,则只显示错误消息或根据需要抛出异常。
从提供的文件名中删除这些无效字符并不能确保新文件名有效。
答案 3 :(得分:1)
您可以按replaceAll()
替换字符:
@Test
public void testName() throws Exception
{
assertEquals("", "\\/:*?\"<>|".replaceAll("[\\\\/:*?\"<>|]", ""));
}
然而,请注意
.
和..
本身也无效,但您允许点&
也是一个不允许的字符(可能是Microsoft特定的)COM1
也是无效的文件名,但它仅包含合法字符(也适用于PRN
,LPT1
和类似字符)(可能是Microsoft特定的)$MFT
及类似内容也无效,但一般情况下可以使用$
(可能是NTFS特定的)