【问题标题】:Replacing special character from a String in Android在Android中替换字符串中的特殊字符
【发布时间】:2013-01-23 13:31:46
【问题描述】:

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

例如

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

所以我想用“_”去掉这些字符

这里是字符

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

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

【问题讨论】:

  • 顺便说一句,你有一个编译器错误,无效的转义序列。
  • 文件夹名称来自服务器端的 JSON
  • @Arslan:不在文件夹名称中,在ReservedChars 字符串中。

标签: java regex


【解决方案1】:

使用此代码:

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

结果是:

ArslanFolder 20_01_2013 _ _ _

你没有说要替换空格,所以有空格……如果需要的话,你可以添加它。

【讨论】:

  • 你为什么把字符类的所有东西都转义了?
【解决方案2】:

我用过其中一个:

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

查看此链接: Replace special characters

【讨论】:

    【解决方案3】:

    试试这个:

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

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

    【讨论】:

    • 但我只需要替换特定的字符集
    【解决方案4】:

    这是正确的解决方案:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-07
      • 1970-01-01
      • 2012-01-07
      • 2014-07-22
      相关资源
      最近更新 更多