4

我有一个字符串作为文件夹/文件名。我正在使用该字符串创建文件夹,文件。此字符串可能包含也可能不包含某些可能不允许创建所需文件夹或文件的章程

例如

String folder = "ArslanFolder 20/01/2013";

所以我想用“_”删除这些字符

这里是字符

private static final String ReservedChars = "|\?*<\":>+[]/'"; 

什么是正则表达式?我知道 replaceAll(); 但我想为此创建一个正则表达式。

4

4 回答 4

16

使用此代码:

String folder = "ArslanFolder 20/01/2013 ? / '";
String result = folder.replaceAll("[|?*<\":>+\\[\\]/']", "_");

结果将是:

ArslanFolder 20_01_2013 _ _ _

你没有说应该替换空格,所以有空格......如果有必要,你可以添加它。

于 2013-01-23T13:39:44.770 回答
1

我使用了其中之一:

String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");

请参阅此链接: 替换特殊字符

于 2015-11-04T08:55:16.447 回答
0

试试这个 :

replaceAll("[\\W]", "_");

它将用下划线替换所有非字母数字字符

于 2013-01-23T13:35:16.933 回答
0

这是正确的解决方案:

String result = inputString.replaceAll("[\\\\|?\u0000*<\":>+\\[\\]/']", "_");

肯特的回答很好,但他不包括字符NUL\

此外,这是一个安全的解决方案,用于替换/重命名用户输入文件名的文本,例如。

于 2021-04-23T19:36:32.270 回答