用空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