从字符串中删除无效字符((“\\ /:*?\”<> |“))以将其用作FileName

时间:2015-07-22 13:02:20

标签: java string

如何从String中删除无效字符,以便它可以用作文件名?   无效字符包括("\\/:*?\"<>|")

4 个答案:

答案 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("[\\\\/:*?\"<>|]", ""));
}

然而,请注意

  • ...本身也无效,但您允许点
  • 对于使用WebDAV的文件,&也是一个不允许的字符(可能是Microsoft特定的)
  • COM1也是无效的文件名,但它仅包含合法字符(也适用于PRNLPT1和类似字符)(可能是Microsoft特定的)
  • $MFT及类似内容也无效,但一般情况下可以使用$(可能是NTFS特定的)