用空stringreplace所有非字母数字字符

我试过使用这个,但没有工作 –

return value.replaceAll("/[^A-Za-z0-9 ]/", ""); 

使用[^A-Za-z0-9]

注:删除空间,因为通常不被认为是字母数字。

尝试

 return value.replaceAll("[^A-Za-z0-9]", ""); 

要么

 return value.replaceAll("[\\W]|_", ""); 
 return value.replaceAll("[^A-Za-z0-9 ]", ""); 

这将使空间保持完整。 我想这就是你想要的。 否则,从正则expression式中删除空格。

您应该意识到[^a-zA-Z]将会replace字符范围AZ / az中不是自身的字符。 这意味着像éß等特殊字符或西里尔字符等将被删除。

如果不需要replace这些字符,请使用预定义的字符类:

  someString.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}]", ""); 

PS: \p{Alnum}没有达到这个效果,它和[A-Za-z0-9]

你也可以尝试这个更简单的正则expression式:

  str = str.replaceAll("\\P{Alnum}", ""); 

Java的正则expression式不需要在正则expression式中使用正斜杠( / )或任何其他分隔符,而不像Perl等其他语言。

我做了这个方法来创build文件名:

 public static String safeChar(String input) { char[] allowed = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_".toCharArray(); char[] charArray = input.toString().toCharArray(); StringBuilder result = new StringBuilder(); for (char c : charArray) { for (char a : allowed) { if(c==a) result.append(a); } } return result.toString(); } 

简单的方法:

 public boolean isBlank(String value) { return (value == null || value.equals("") || value.equals("null") || value.trim().equals("")); } public String normalizeOnlyLettersNumbers(String str) { if (!isBlank(str)) { return str.replaceAll("[^\\p{L}\\p{Nd}]+", ""); } else { return ""; } } 
 public static void main(String[] args) { String value = " Chlamydia_spp. IgG, IgM & IgA Abs (8006) "; System.out.println(value.replaceAll("[^A-Za-z0-9]", "")); } 

输出: ChlamydiasppIgGIgMIgAAbs8006

Github: https : //github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java

Interesting Posts