在Android中替换字符串中的特殊字符

4

我有一个字符串作为文件夹/文件名。我正在使用该字符串创建文件夹和文件。这个字符串可能包含一些字符,这些字符可能会阻止创建所需的文件夹或文件。

e.g

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

所以我想用“_”替换这些字符

以下是这些字符

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

那应该使用什么正则表达式呢?我知道有replaceAll(),但我想要自己创建一个正则表达式。


顺便说一下,您有一个编译器错误,无效的转义序列。 - jlordo
文件夹名称是从服务器端以JSON格式传输的。 - Arslan Anwar
@Arslan:不是文件夹名称,而是“ReservedChars”字符串。 - jlordo
4个回答

16

使用此代码:

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

结果将会是:

ArslanFolder 20_01_2013 _ _ _

你没有说空格需要被替换,所以这里还有空格...如果必要的话,你可以添加它。


你为什么在字符类中转义了所有的东西? - Rohit Jain

1
我使用了其中之一:

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

请查看此链接: 替换特殊字符


1

这是正确的解决方案:

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

Kent的回答很好,但是他没有包括字符NUL\
此外,这是一个安全的解决方案,用于替换/重命名用户输入的文件名等。

0

试试这个:

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

它将把所有非字母数字字符替换为下划线。

但我只需要替换特定的字符集。 - Arslan Anwar

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