我需要跳过一些特殊的角色。我已经写了一段代码。但它是纯Java代码。
String val = menuItemLabelTB.getValue();
boolean spclCharecterCheck = false;
String specialCharacters="!#$%&'()*+,.:;=?@[]^`{|}~";
for (int i = 0; i < val.length(); i++) {
for (int j = 0; j < specialCharacters.length(); j++) {
if(val.charAt(i) == specialCharacters.charAt(j))
spclCharecterCheck = true;
}
}
如果我想通过使用regex
来最小化复杂性,那么可以这样做吗?或者我是否需要使用任何其他Java内置函数。
答案 0 :(得分:4)
是的,您可以使用Pattern
和正则表达式执行此操作。像,
// Note that the literal [](s) have to be escaped below,
String specialCharacters = "[!#$%&'()*+,.:;=?@\\[\\]^`{|}~]";
String val = "a{b}c";
Pattern p = Pattern.compile(specialCharacters);
System.out.println(p.matcher(val).replaceAll(""));
哪个输出
abc
答案 1 :(得分:0)
您可以指定要在字符串中删除的字符,然后使用流删除不需要的字符。
String specialCharacters="!#$%&'()*+,.:;=?@[]^`{|}~";
String val = "a{b}c";
String result = val
.chars()
.mapToObj(a -> String.valueOf((char) a))
.filter(a -> !specialCharacters.contains(a))
.reduce((t, u) -> t + u)
.orElse(" ");
System.out.println(result);
打印出来
abc