从Android中的String替换特殊字符

时间:2013-01-23 13:31:47

标签: java regex

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

例如

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

所以我想用“_”

删除这些字符

这是字符

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

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

4 个答案:

答案 0 :(得分:16)

使用此代码:

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

结果将是:

ArslanFolder 20_01_2013 _ _ _

你没有说空间应该被替换,所以空间就在那里......你可以在需要的时候添加它。

答案 1 :(得分:1)

我使用了其中一个:

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

查看此链接: Replace special characters

答案 2 :(得分:0)

试试这个:

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

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

答案 3 :(得分:0)

这是正确的解决方案:

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

Kent 的回答很好,但他没有包含字符 NUL\

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