我需要过滤来自用户的输入,这样才不会有桩柱标志(柱标)字符。以下方法筛选来自用户的输入
public String filterInput(String userInput) {
StringBuilder sBuilder = new StringBuilder();
for (char character : userInput.toCharArray()) {
if (checkCharacter(character)) {
sBuilder.append(character);
}
}
return sBuilder.toString();
}
public boolean checkCharacter(char charToCheck) {
return charToCheck != 182;
}filterInput被传递一个包含用户输入的字符串,该字符串是从Scanner(System.in)获取的,用户输入之前没有进行过滤。
我担心的是,代码是否写得很好,还是仍然有一种方式可以让用户编写Pilcrow符号,当字符串被拆分为字符时,它可以绕过checkCharacter方法返回true,从而有效地将禁止字符注入到我的应用程序中?
发布于 2017-08-28 20:13:07
你的代码在我看来是正确和安全的。不过,我会把它简化为:
public static String filterInput(String userInput) {
return userInput.replace("\u00b6" /* Pilcrow sign */, "");
}当您只需要一个静态函数时,两个公共函数就显得过分了。(如果您打算通过重写子类中的checkCharacter()来配置过滤器,那么我建议更改为更灵活的设计,将顽皮字符指定为参数。)
https://codereview.stackexchange.com/questions/174249
复制相似问题