Per*_*nCZ 11 java regex replace character whitelist
我正在尝试编写java代码,这将删除所有不需要的字符,并让只有白名单.
例:
String[] whitelist = {"a", "b", "c"..."z", "0"..."9", "[", "]",...}
Run Code Online (Sandbox Code Playgroud)
我希望只有字母(大写和小写)和数字+我要添加的下一个字符.然后我会for()为字符串中的每个字符开始循环,如果它不在白名单中,则用空字符串替换它.
但这不是好的解决方案.也许它可以使用模式(正则表达式)以某种方式完成?谢谢.
Jon*_*eet 23
是的,您可以使用String.replaceAll哪个采用正则表达式:
String input = "BAD good {} []";
String output = input.replaceAll("[^a-z0-9\\[\\]]", "");
System.out.println(output); // good[]
Run Code Online (Sandbox Code Playgroud)
或者在番石榴中你可以使用CharMatcher:
CharMatcher matcher = CharMatcher.inRange('a', 'z')
.or(CharMatcher.inRange('0', '9'))
.or(CharMatcher.anyOf("[]"));
String input = "BAD good {} []";
String output = matcher.retainFrom(input);
Run Code Online (Sandbox Code Playgroud)
这只是显示小写版本,使其更容易演示.要包含大写字母,请"[^A-Za-z0-9\\[\\]]"在正则表达式(以及您想要的任何其他符号)中使用 - 并且CharMatcher您可以使用or它CharMatcher.inRange('A', 'Z').