Java 如何检查字符串的每个字符是否在白名单中?

Java 如何检查字符串的每个字符是否在白名单中?,java,string,replace,Java,String,Replace,我有一个允许出现在字符串中的字符白名单。在白名单上找不到的任何字符都应替换为空格(“”)。我如何在Java中实现这一点?下面是白名单上的角色 A through Z, a through z, 0 through 9, -,!,@,#,$,_ 我想这就是你要找的 String blacklist = "[^A-Za-z0-9-!@#$_]"; //negation of whitelisted characters str = str.replaceAll(blacklist, " ");

我有一个允许出现在字符串中的字符白名单。在白名单上找不到的任何字符都应替换为空格(“”)。我如何在Java中实现这一点?下面是白名单上的角色

A through Z,
a through z,
0 through 9,
-,!,@,#,$,_
我想这就是你要找的

String blacklist = "[^A-Za-z0-9-!@#$_]"; //negation of whitelisted characters
str = str.replaceAll(blacklist, " ");   //string to be cleaned up
正则表达式
[^A-Za-z0-9-!@#$\uz]
针对的是不是字母、数字或任何特殊字符的每个字符
-@#$_(请注意后面的“^”)

如果只想检查字符串中的每个字符是否都在白名单中,只需使用:

如果
result
等于
false
,则表示
str
的所有字符都存在于白名单中(没有一个被列入黑名单)

String blacklist = "[^A-Za-z0-9-!@#$_]";
boolean result = str.matches(blacklist);